C# TcpClient抛出SocketException

C# TcpClient抛出SocketException,c#,tcp,C#,Tcp,我得到了以下代码: public static readonly IPEndPoint RootNode = new IPEndPoint(IPAddress.Parse("213.226.18.82"), 8333); public static void Main(string[] args) { TcpClient tcpClient = new TcpClient(RootNode); } 这会抛出一个带有消息的SocketException。请求的地址在其上下文中无效。 奇

我得到了以下代码:

public static readonly IPEndPoint RootNode = new IPEndPoint(IPAddress.Parse("213.226.18.82"), 8333);

public static void Main(string[] args)
{
    TcpClient tcpClient = new TcpClient(RootNode);
}
这会抛出一个带有消息的
SocketException
。请求的地址在其上下文中无效。 奇怪的是,这段代码可以工作:

public static readonly IPEndPoint RootNode = new IPEndPoint(IPAddress.Parse("213.226.18.82"), 8333);

public static void Main(string[] args)
{
    TcpClient tcpClient = new TcpClient();

    tcpClient.Connect(RootNode);
}
这里的区别是什么?

初始化TcpClient类的新实例并将其绑定到指定的本地端点

使用指定的远程网络端点将客户端连接到远程TCP主机

在it的文档中讨论了此构造函数:

TcpClient(IPEndPoint):初始化TcpClient类的新实例并将其绑定到指定的本地端点


所以这里它说它将把它绑定到本地地址,就像你在听某个端口一样。
Connect()
命令将您连接到远程终端。这就是区别。

一个连接有两个端点。一个本地的和一个远程的。第一个代码应该设置本地端点,而第二个代码应该设置远程端点。