gpt4 book ai didi

c# - 无法两次连接到同一个本地 TCP 服务器

转载 作者:行者123 更新时间:2023-12-03 12:03:49 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Error: Address already in use while binding socket with address but the port number is shown free by `netstat`

(8 个回答)


4年前关闭。




我正在尝试使用 .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 :

Only one usage of each socket address (protocol/network address/port) is normally permitted



我究竟做错了什么?使用 block 不应该正确释放套接字吗?

最佳答案

正如您在 MSDN 中看到的那样使用参数类型为 IPEndPoint 的构造函数也绑定(bind)到指定的端口。在您的情况下,您不需要客户端绑定(bind)到另一个端口,只有服务器套接字必须绑定(bind)到 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);

关于c# - 无法两次连接到同一个本地 TCP 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45549209/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com