저는 Linux를 사용하고 있습니다.TCP 연결이 정상적으로 닫혔는지 여부를 확인하는 방법 (읽기없이)?
select() 또는 poll()을 사용하여 TCP 연결이 FIN을 통해 피어에 의해 닫혔는지 아니면 RST에 의해 종료되었는지를 확인하는 방법에 대한 예제를 제공 할 수 있습니까?
poll()은 revents에서 POLLHUP 또는 POLLERR을 설정하여 RST를 감지 할 수 있지만 select()에는 이와 같은 기능이 없습니다.
내 테스트에서 소켓이 RST에 의해 종료되면 getsockopt에 의해 소켓 오류가 발생하여 ECONNRESET이됩니다. 이것이 효과적인 방법인가요?
연결이 닫히는 방식을 결정해야합니까?
감사합니다.
"* TCP 연결이 정상적으로 * 피어에 의해 폐쇄 된 경우 확인하는 방법": 또한 당신은 소켓에 보류중인 오류가 있는지 확인하려면이 옵션을 사용할 수있는'RECV()를'0을 반환합니다. – alk
@alk, 소켓에서 읽고 싶지 않습니다. 다른 방법이 있습니까? –
@alk 당신은 -1에 대해 생각하고 있습니다. 0의 리턴이 유효합니다. –