相关疑难解决方法(0)

如何配置套接字连接超时

当客户端尝试连接到断开连接的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)

c# sockets timeout

98
推荐指数
6
解决办法
15万
查看次数

异步网络操作永远不会完成

我有几个异步网络操作返回可能永远不会完成的任务:

  1. UdpClient.ReceiveAsync 不接受 CancellationToken
  2. TcpClient.GetStream返回NetworkStream不尊重CancellationTokenon的Stream.ReadAsync(仅在操作开始时检查取消)

两者都在等待可能永远不会发生的消息(例如因丢包或没有响应).这意味着我有永远不会完成的幻像任务,永远不会运行的延续和使用套接字.我知道我可以使用TimeoutAfter,但这只能解决延续问题.

那我该怎么办?

c# networking idisposable async-await cancellation-token

6
推荐指数
1
解决办法
5435
查看次数