Windows 플랫폼의 서버 측에서 클라이언트 파이프의 핸들 상태를 감지하는 방법이 있는지 궁금합니다.NamedPipe를 사용할 때 클라이언트 파이프의 핸들이 닫혀 있는지 여부를 감지 할 수있는 방법이 있습니까?
클라이언트가 CloseHandle()
기능으로 파이프를 (연결이 끊긴) 닫았지만 서버 측에서 감지 할 수있는 방법이없는 것 같습니다.
핸들 개체와 함께 WaitForSingleObject()
을 사용하면 클라이언트 핸들 상태에 관계없이 WAIT_OBJECT_0
을 반환합니다. 그렇다면 클라이언트 파이프의 핸들이 비용이 적게 드는 서버 쪽에서 닫혔는지 여부를 확인하는 좋은 해결책은 무엇입니까?
이번에도 다시 한번 감사드립니다. 클라이언트가 닫고 (CreateFile) 파이프 핸들을 주기적으로 열리기 때문에 (현재) 연결 상태를 확인하기 위해 클라이언트 핸들을 확인하고 싶었습니다. 비동기 I/O 및 PIPE_ACCESS_DUPLEX를 사용하고 있지만이 방법이 중요하지 않을 수 있습니다. 따라서 파이프에서 데이터를 읽으려고하면 솔루션이 될 수 있다는 의미입니까? – ToBeSpecific
예, 읽기 요청을 발행하고 데이터를 기다리는 경우 클라이언트가 파이프 끝을 닫 자마자 요청이 실패합니다 (ERROR_BROKEN_PIPE). –
잘 작동합니다. 답변 주셔서 감사합니다. – ToBeSpecific