[완료] 서버 - 클라이언트간에서 클라이언트가 닫힐 때 소켓의 반응이 궁금합니다.
글쓴이: fastwater / 작성시간: 화, 2010/11/23 - 6:09오후
일단
서버소켓의 accept와 stdin에서 fgets를 동시에 수행하는 것은 select를 이용하여 해결하였습니다.
그런데 문제가 클라이언트가 꺼지면 서버소켓이 반응을 하는지 FD_ISSET이 반응을 해서 accept가 있는 블럭으로 가버려 accept에서 서버가 멈추네요. 물론 클라이언트 추가 접속은 잘 됩니다만 fgets를 받아야 할 부분이 먹통이 되버려서;;
분명 클라이언트에서 서버와 연결된 소켓을 중간에 닫아주는데, 그 때 반응이 오는게 아니라 클라이언트 프로그램이 종료 될 때 반응이 온다는 것도 좀 이상하고 말이죠.
도대체 무슨 데이터가 오나 검사해보려고 read로 적당히 받아보려 했는데 -1 리턴하고 데이터를 못받더군요.
궁금합니다 ㅠㅠ
Forums:
소켓이 close 되면 select 에서 받은 후에
소켓이 close 되면 select 에서 받은 후에 read에서 읽고 리턴 값 체크해서 errno 판단하고 close 하시면 됩니다.
------식은이 처------
길이 끝나는 저기엔 아무 것도 없어요. 희망이고 나발이고 아무 것도 없어.
답변 감사합니다.
비록 제가 문제의 요지의 파악을 못해서 엉뚱한 질문을 올렸지만... 아무튼 감사합니다.
댓글 달기