在C#中,可以通過設置Socket的KeepAlive屬性來避免連接超時。KeepAlive是一個布爾值,表示是否啟用TCP的KeepAlive功能。當設為true時,系統會定期發送KeepAlive包以確保連接處于活動狀態。可以通過以下代碼設置KeepAlive屬性:
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, true);
在設置KeepAlive屬性之后,可以通過設置相應的KeepAlive參數來控制KeepAlive包的發送頻率和超時時間。可以通過以下代碼設置KeepAlive參數:
// 設置KeepAlive包的發送間隔和超時時間
socket.SetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.TcpKeepAliveTime, 30000); // 發送KeepAlive包的間隔時間為30秒
socket.SetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.TcpKeepAliveInterval, 5000); // KeepAlive包發送失敗后的重傳間隔時間為5秒
socket.SetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.TcpKeepAliveRetryCount, 3); // 重傳次數為3次
通過設置合適的KeepAlive參數,可以確保連接處于活動狀態并避免連接超時。