当客户端尝试连接到断开连接的IP地址时,超过15秒的超时超时...我们如何减少此超时?配置它的方法是什么?
我用来设置套接字连接的代码如下:
try
{
m_clientSocket = new Socket(
AddressFamily.InterNetwork,
SocketType.Stream,
ProtocolType.Tcp);
IPAddress ip = IPAddress.Parse(serverIp);
int iPortNo = System.Convert.ToInt16(serverPort);
IPEndPoint ipEnd = new IPEndPoint(ip, iPortNo);
m_clientSocket.Connect(ipEnd);
if (m_clientSocket.Connected)
{
lb_connectStatus.Text = "Connection Established";
WaitForServerData();
}
}
catch (SocketException se)
{
lb_connectStatus.Text = "Connection Failed";
MessageBox.Show(se.Message);
}
Run Code Online (Sandbox Code Playgroud) 我有几个异步网络操作返回可能永远不会完成的任务:
UdpClient.ReceiveAsync 不接受 CancellationTokenTcpClient.GetStream返回NetworkStream不尊重CancellationTokenon的Stream.ReadAsync(仅在操作开始时检查取消)两者都在等待可能永远不会发生的消息(例如因丢包或没有响应).这意味着我有永远不会完成的幻像任务,永远不会运行的延续和使用套接字.我知道我可以使用TimeoutAfter,但这只能解决延续问题.
那我该怎么办?