1

我正在运行客户端/服务器应用程序。我使用文本框让用户输入 IP 地址和端口。我尝试连接到服务器,使用 127.0.0.1 并且没有问题。之后我尝试使用 192.168.2.102 (这台计算机的 NAT ip 地址),但它失败了。知道为什么吗?

我正在使用的代码是:(这是连接的部分)

connect(string IPaddress, int port)
{
    TcpCLient connection = new TcpClient();
    connection.Connect(IPaddress, port);
}

我检查了调试,它确实使用了正确的 IP 地址和端口。防火墙应该允许它连接。有点奇怪。

编辑: 我想我知道问题所在。在服务器端,我使用

_listener = new TcpListener(IPAddress.Loopback, 8001);

我认为这就是它只接受来自 127.0.0.1 的连接的原因。但是,我应该改用什么?我只想要来自任何 IP 与此端口的任何连接。

4

2 回答 2

3

如果您指定 IPAddress.Loopback,那么只有到 127.0.0.1 的连接才有效。将其替换为IPAddress.Any以告诉您的服务器侦听所有接口。

于 2009-07-01T14:57:02.100 回答
0

首先,我见过的唯一返回Connection was not possible because the destination computer actively rejected it的情况是实际上没有任何东西在指定地址和端口监听连接......或者有防火墙。

您可能想用实际指向您认为它的位置进行tracert验证192.168.2.102。如果您确实怀疑代码中存在问题,则另一种选择是telnet从命令行连接到地址和端口(尽管我在这里看不到这适用)。

附录:
是否有任何其他应用程序可以成功连接到同一台机器上的特定 IP 地址?

于 2009-07-01T14:45:15.260 回答