我需要测试 TCP 端口是否空闲。我写了这个方法:
private bool freePort(int port) {
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IAsyncResult result = socket.BeginConnect(IPAddress.Loopback, port, null, null);
bool success = result.AsyncWaitHandle.WaitOne(1000, true);
try{
socket.Close();
}catch(Exception){}
return !success;
}
这适用于 Windows 7,但不适用于 Windows XP。
在 winXP 中有时有效,有时给出错误答案...
最佳答案
最好完全尝试 Apache 将尝试的操作:打开端口,而不是连接到它。
using (var listener = new TcpListener(IPAddress.Loopback, port))
listener.Start();
关于c# - 测试本地 TCP 端口是否空闲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19024355/