TCP 소켓을 통해 클라이언트 - 서버 통신을 테스트하고 있습니다. 나는 C로 서버를 썼고 리눅스 머신에서이 서버를 실행했고 테스트를 위해 nc
을 클라이언트로 사용하고있다.닫힌 소켓의 두 번째 전송시에만 깨진 파이프
서버는 클라이언트와 처음 메시지를 교환 한 후 응답을받지 않고 클라이언트에 주기적으로 일부 메시지를 보냅니다. 나는 클라이언트를 죽이면
, I는 서버에서 수행 한 첫 번째 send()
이 EPIPE
오류와 함께 실패하지만, 이것은 단지 클라이언트가 간 후에 두 번째 send()
에서 밝혀 것을 기대! 첫 번째 send()
은 클라이언트를 죽인 후 1100 바이트를 성공적으로 보낼 수 있습니다. 다음 send()
작업은 ex3ct21으로 끝나는 EPIPE
으로 끝납니다.
이 동작을 설명 할 수있는 사람이 있습니까? 사실 TCP/IP 스택에 쓰기 때문에 스택 할 때까지 할 수 있습니까? 그렇다면 어떻게 연결 상태를 확인할 수 있습니까? 피어가 아직 있는지 확인하십시오.
답장을 보내 주셔서 감사합니다. 명확하고 명확합니다. 불행히도 나는 리눅스 시스템의 명령이 그것을 지원하는 것 같지 않기 때문에 당신이 제안한 nc 옵션을 테스트 할 수 없다.그건 그렇고 당신이 가르쳐 준 문서와 당신이 준 설명은 분명하고 유용합니다. 감사! – Igor