我尝试使用.NET TcpClient
连接到TCP服务器。为了测试,服务器在我自己的机器上。它最初工作,但不是在我重新启动我的应用程序时。
所以我写了一小段代码来尝试连接/断开两次,我无法弄清楚我做错了什么:
const int clientPort = 29501;
const int port = 29500;
using (var client = new TcpClient(new IPEndPoint(IPAddress.Loopback, clientPort)))
client.Connect(IPAddress.Loopback, port);
using (var client = new TcpClient(new IPEndPoint(IPAddress.Loopback, clientPort)))
client.Connect(IPAddress.Loopback, port);
当我运行此代码时,我得到SocketException
:
通常只允许使用每个套接字地址(协议/网络地址/端口)
我做错了什么?使用块是否应该正确释放插座?
答案 0 :(得分:1)
正如您在MSDN中看到的那样,使用类型为IPEndPoint
的参数的构造函数也会绑定到指定的端口。在您的情况下,您不需要客户端绑定到另一个端口,只有服务器套接字必须绑定到TCP端口。
所以你可以使用无参数构造函数:
const int port = 29500;
using (var client = new TcpClient())
client.Connect(IPAddress.Loopback, port);
using (var client = new TcpClient())
client.Connect(IPAddress.Loopback, port);