서버가 비정상적으로 종료되었을때..
글쓴이: skymagic01 / 작성시간: 목, 2003/10/23 - 10:57오전
지금 서버를 SELECT 를 써서 Mysql연동을 시켜 데이타를 주고 받고 하는것인데요
클라이언트에서 패킷을 잘못날려서 서버가 죽었을때 다시 실행해서 클라이언트에서 요청을 보내면 클라이언트가 블럭이 먹혀있고 풀리지가 않네요
그래서 다시 포트를 바꿔 쓰고 그러거든요. 이거 문제를 어떻게 해결해야 하는지 난감하네요.. 계속 다운됬을때 계속 바꿀수는 없는거고..
그리고 지금 Mysql을 연동을 하는데 패킷이 오면 그패킷을 처리할때
디비를 열었다가 읽어와서 처리하고 다시 닫고 이런방식을 사용하거든요
열여있는상태에서 서버가 종료되어서 그런지.. 만약 그렇다면 어떻게 해결해야 하는지 궁금하네요.
Forums:
흠.. 클라이언트가 왜 블록이 먹혀 있는지 잘 모르겠네요.소켓이 연결
흠.. 클라이언트가 왜 블록이 먹혀 있는지 잘 모르겠네요.
소켓이 연결되었던 상태에서 서버가 죽었을 때 클라이언트가 write를 시도하면 첫번 write는 성공하고 두번째에서 실패하거나 시그널을 맞을꺼고,
read를 시도하면 0을 리턴할 테고,
서버가 안 떠 있는 상황에서 클라이언트가 접속을 시도하면 connect가 실패할텐데요..
혹시 내부적으로 쓰는 소켓 라이브러리에서 이런 상황들을 처리 안 하신 건 아닌지 모르겠고요.
포트 번호를 바꿔쓰신다는 걸 보니 (아마 서버의 포트겠죠?)
서버에서 소켓을 열 때 혹시 SO_REUSEADDR 옵션을 안 주신게 아닌가 생각이 되는데요.
이건 게시판 검색하면 많은 답변이 있으니까 간단히 검색하시면 될 것 같습니다.
댓글 달기