C # 네트워크 연결 해제 예외 처리 : ReceiveTimeout, SendTimeout 및 KeepAliveValues를 (하트 비트 세트)
Socket.SetSocketOption (사실 SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout는); // 유용하게 타임 아웃을 수신하도록 설정 타임 아웃 옵션을 수신하도록 설정해야합니다.
Socket.SetSocketOption (사실 SocketOptionLevel.Socket, SocketOptionName.SendTimeout는); // 옵션을 보낼 유용하게 송신 시간 제한을 설정하도록 설정해야합니다.
Socket.ReceiveTimeOut = 10000; // MS
Socket.SendTimeOut = 10000; // MS
2, 긴 연결
소켓은 하트 비트 검출 수단에 의해 처리 될 수있다.
IO 기능을 하부 소켓은 일반적 WSAIoctl.이 패키지 C # 1 함수, 즉 Socket.IOControl 방법을 설정하여 수행된다.
publicint IOControl (
IOControlCode ioControlCode,
바이트 [] optionInValue,
바이트 [] optionOutValue
)
두 번째 파라미터는 상기 파라미터 값에 대한 발신 세번째 매개 변수 값을 전달되는 상기 제 1 파라미터는 소켓 IO 제어 코드이다.
KeepAliveValues, TCP 연결 유지 전송 제어 패킷 전송 간격하십시오이 많은 소켓 IO 제어 방식에 정의 윈속 2. 디폴트 값은 간격이 설정 값을 초과 할 때, 클라이언트에 대한 응답은 그 클라이언트 소켓 단절되면 소켓이 계속적으로 송신 된 신호를 다섯 번 접속되고, 2 시간.
다음과 같이 우리는이 간격을 조정할 수 있습니다 :
newClient.Client.IOControl (IOControlCode.KeepAliveValues, BitConverter.GetBytes (120), NULL); // 이분 설정.
위의 두 가지 방법은 네트워크 연결 단선 이상이 검출된다.