asio를 사용하는 비동기 TCP/IP 클라이언트가 있습니다. 연결이 끊어지면 async_read의 내 핸들 함수가 오류를 수신합니다. 그래서 연결이 끊어 졌다는 소식을 듣습니다.boost asio : tcp 연결이 활성 상태인지 모니터링하는 방법
이제는 추상 인터페이스가이 시퀀스를 적용하는 동기 TCP/IP 클라이언트를 구현하는 일부 레거시 코드를 리팩토링하고 있습니다. 동기 쓰기, 동기 읽기입니다. asio로 작업하는 것이 매우 쉽지만, 연결이 끊어지면 비동기 적으로 알고 싶습니다.
보다 더 우아한 방법이 있나요 :
옵션 A : 소켓이 아직 살아 있다면 (확인 스레드를 추가 읽으려고하여 ...하지만 어떻게 읽기가 확신 할 수 있습니다 ?
옵션 B) Boost asio ip tcp iostream Error Detection를 참조하십시오 내 동기 읽기에서 데이터를 도용하지 않습니다 사용 대신 async_read과와 동기가
을 읽을 모방
나는 대답이 '아니오'라고 생각합니다. 어쩌면 몇 가지 플랫폼 특정 솔루션이 있습니다. – mirk
특정 시간 프레임 내에 전송 된 패킷에 대한 확인 응답을받지 못하면 TCP 프로토콜이 연결 실패를 감지 할 수 있다고 생각하지 않습니다. – Ferruccio
옵션 B를 구현했습니다. 이해할 수없는 두 가지 사항이 있습니다 1. 단선이 감지되지 않고 2. 프린터 (즉 프린터)의 이더넷 케이블이 연결되어 있지 않으면 데이터를 보낼 수 있습니다 오류를 반환하지 않습니다. 두 번째 시간에만 오류가 발생합니다 – DoogQc