C # 네트워크 연결 해제 예외 처리 : ReceiveTimeout, SendTimeout 및 KeepAliveValues를 (하트 비트 세트)

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); // 이분 설정.

위의 두 가지 방법은 네트워크 연결 단선 이상이 검출된다.

 

추천

출처www.cnblogs.com/chenhuadan/p/11615550.html