具有IPEndPoint的TcpClient失败,但是具有相同IPEndPoint.Address的TcpClient却没有?

问题描述 投票:0回答:1

我在这里有一种奇怪的情况,不确定是.NET Core中的错误还是我的大脑。

使用IPEndPoint在我的类中存储目标IP:端口,我使用TcpClient进行连接。

IPEndPoint _ipendpoint = IPEndPoint.Parse("127.0.0.1:5000");
TcpClient tcp1 = new TcpClient(_ipendpoint);
Tcpclient tcp2 = new TcpClient(_ipendpoint.Address.ToString(), _ipendpoint.Port);

tcp1给出SocketException,tcp2不给出。 (评论其中一项以测试另一项)

那么这里怎么了?

.net-core tcpclient socketexception
1个回答
0
投票

确定,找到了。为何MS如此实施它是如此令人难以理解。

在这里回答:link

简而言之:虽然它们看起来相等(都提供了地址和端口),但其中一个作为客户端连接到该地址,另一个则绑定到该地址(打开本地计算机上的端口)。

这在MSDN文档中并不清楚。另外,您希望TcpClient充当服务器吗?糟糕的设计决策。

© www.soinside.com 2019 - 2024. All rights reserved.