c# - 如何设置测试TCP连接超时?

标签 c# .net tcp connection settimeout

我尝试使用以下代码测试 TCP 连接。

System.Threading.Thread t = new System.Threading.Thread(() =>
{      
    using (TcpClient client = new TcpClient())
    {
        client.Connect(ip, Convert.ToInt32(port));
    }
});
t.Start();

IP或端口不合法如何设置超时时间?

最佳答案

没有内置的方法可以做到这一点。我将以下代码用于我们的许多应用程序。该代码绝不是原始代码,但可以正常工作。请注意,您可能必须向此函数添加重试...有时即使服务器已启动并正在运行,它也会返回 false。

  private static bool _TryPing(string strIpAddress, int intPort, int nTimeoutMsec)
    {
        Socket socket = null;
        try
        {
            socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.DontLinger, false);


            IAsyncResult result = socket.BeginConnect(strIpAddress, intPort, null, null);
            bool success = result.AsyncWaitHandle.WaitOne(nTimeoutMsec, true);

            return socket.Connected;
        }
        catch
        {
            return false;
        }
        finally
        {
            if (null != socket)
                socket.Close();
        }
    }

关于c# - 如何设置测试TCP连接超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4583873/

相关文章:

c# - 访问注册表项被拒绝当我想更新值时

c# - 解密由 pgcrypto 加密的数据(在 C# 中)

C# - 为什么 Math.Atan(1) != 接近 45

c# - 如何使用 Youtube api 查找直播视频列表?

.net - .Net 设计模式的良好来源

c# - 简单的异步 TCP 聊天应用程序 [C#]

c# - 设置 DataGridView ComboBox 的默认值

.NET Core 在 AzuerAD 身份验证后添加声明

c# - 如何使用套接字流正确分离数据包? C#

http - Golang http传输中保活连接数达到MaxIdleConns会怎样