c# - 如何配置套接字连接超时

标签 c# sockets timeout

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

最佳答案

我找到了这个。比接受的答案更简单,并且适用于 .NET Framework v2

Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

// Connect using a timeout (5 seconds)

IAsyncResult result = socket.BeginConnect( sIP, iPort, null, null );

bool success = result.AsyncWaitHandle.WaitOne( 5000, true );

if ( socket.Connected )
{
    socket.EndConnect( result );
}
else 
{
     // NOTE, MUST CLOSE THE SOCKET

     socket.Close();
     throw new ApplicationException("Failed to connect server.");
}
 
//... 

关于c# - 如何配置套接字连接超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13954131/

相关文章:

c# - 企业图书馆数据访问 block 设计决策

c#如何将光标设置在插入文本之前的末尾

websocket - jetty websocket 读取超时

ruby-on-rails - Phusion 乘客 + Nginx : Set Connection Timeout parameter in nginx conf

c# - 在网络流上安全超时 ReadLine

c# - 我需要用法语创建 .net 4.0 部署设置

c++ - 通过套接字发送时字符变为 int

android - 使用 Python 服务器和 Android 客户端进行套接字编程

c# - 无法使用 RESP 在 Redis 服务器上执行命令

c# - 复合 View - View 已存在于区域错误中