我尝试使用以下代码测试 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/