我在这里有一种奇怪的情况,不确定是.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不给出。 (评论其中一项以测试另一项)
那么这里怎么了?
确定,找到了。为何MS如此实施它是如此令人难以理解。
在这里回答:link
简而言之:虽然它们看起来相等(都提供了地址和端口),但其中一个作为客户端连接到该地址,另一个则绑定到该地址(打开本地计算机上的端口)。
这在MSDN文档中并不清楚。另外,您希望TcpClient充当服务器吗?糟糕的设计决策。