2011-02-18 3 views
2

.Net Sockets Keep Alive가 승인을받지 못하면 어떤 이벤트가 발생합니까?

m_clientSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, Convert.ToInt32(True)) 

m_clientSocket.IOControl(IOControlCode.KeepAliveValues, SIO_KEEPALIVE_VALS, result) 

을 사용하여 C# .NET 소켓을 구성했습니다. 첫 번째 승인을받지 못한 경우 매 30 초마다 보내고 매 10 초마다 보내야합니다.

연결이 작동 중일 때 keep keep alive를 표시하고 내 서버에 플래그를 보내고받을 수 있습니다.

연결이 끊어지면 내 Keep Alive가 전송되고 수신 확인이 수신되지 않음을 알 수 있습니다. Keep Alive가 전송 됨으로 인해 내 설정에 따라 행동이 변경됨을 알 수 있습니다. 즉 30 초마다 10 초마다 전송됩니다.

어떤 종류의 이벤트가 발생하여 중단 (즉, 소켓을 종료 한 다음 다시 시도하기 시작) 할 수 있습니다.

누구나 Keep Alives가 연결이 끊어 졌다는 사실을 알아 차리는 방법을 말해 줄 수 있습니까?

감사 아디

답변

1

소켓에 대한 이벤트를 발생하지 않는 자신의 연결 상태 (또는 그 문제에 대한 다른 것). 실패를 감지하려면 보내기 또는 받기 작업을 수행해야합니다.

주기적으로 소켓을 폴링하면 오류 표시가 나타납니다. 이에 대한 예가 여기에 있습니다. Instantly detect client disconnection from server socket

관련 문제