2009-12-26 7 views

답변

4

소켓의 다른 쪽 끝이 닫히면 끝이 읽을 수있는 것으로 표시되어 0에서 read을 반환합니다. 이는 "파일 끝"표시입니다. 당신은 소켓에 write하려고하면

, 당신은 SIGPIPE 신호를받을 것이며, writeEPIPE에 errno를 설정 ("깨진 파이프")로 오류를 반환합니다. 다른 쪽 끝은 의 소켓을 닫을 수 있으므로이 이벤트를 처리 할 준비가되어 있어야합니다. 시간.

+0

고마워요! plz 당신이 그것을 할 수있는 방법에 대한 자세한 내용을 줄 수 있습니까? 예를 들어 클라이언트 측에서 ctrl-c를 누르면 SIGINt 신호도 반환해야합니까? 다시 한 번 귀하의 도움에 감사드립니다. – Apollo

+0

@Apollo 다른 컴퓨터간에 신호가 전송되지 않음 – qrdl

+0

ctrl-c를 사용하여 클라이언트 응용 프로그램을 종료하면 OS가 연결을 닫고 서버 프로세스가이를 끝까지 감지합니다 -file 조건. – caf

-1

당신은 TCP_KEEPALIVE가 필요합니다.

+0

감사합니다! 그러나 ctrl-c를 누르면 어떻게 처리해야합니까? – Apollo

+0

Keepalive (SO_KEEPALIVE는 소켓 옵션의 이름이며, btw)는 아무 관계가 없습니다. OP는 반 개방 연결 감지에 대해 묻지 않았습니다 – qrdl

+0

감사합니다! Keepalive 기능이 중단과 아무 관련이 없음을 알고 있습니다 ... – Apollo

관련 문제