2009-07-01 95 views
1

我正在运行客户端/服务器应用程序。我使用文本框让用户输入IP地址和端口。我尝试使用127.0.0.1连接到服务器,并且没有问题。之后,我尝试使用192.168.2.102(此计算机的NAT IP地址),并且失败。任何想法为什么?未连接到C#中的服务器问题

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

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连接到这个端口。

+1

您可能需要包含有关失败的更多信息......您会得到什么异常?怎么了? – jerryjvl 2009-07-01 14:30:05

+0

“192.168.2.102:8001连接是不可能的,因为目标计算机主动拒绝了它”。 – Nefzen 2009-07-01 14:34:51

回答

3

如果您指定IPAddress.Loopback,那么只有127.0.0.1的连接才能工作。将其替换为IPAddress.Any以通知您的服务器侦听所有接口。

0

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

您可能想要验证一个tracert192.168.2.102实际上指向您认为它的位置。另一个选择是,如果您确实怀疑代码中存在问题,则可以使用命令行中的telnet连接到地址和端口(尽管我看不到这适用于此)。

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