使用TCP侦听器/套接字连接到另一台计算机上的服务器

时间:2015-05-20 23:30:48

标签: c# sockets tcp network-programming server

我有一台简单的服务器,我可以在一台简单的聊天客户端可以连接的计算机上运行。当我在本地运行服务器时,我可以从本地的客户端连接到它。问题是我似乎无法从另一台计算机上的客户端连接到服务器。

客户端的一些示例代码:

static string ipAddr = "<server local IP address>";
static Int32 port = 4296;
static System.Net.Sockets.TcpClient tcpClient = new System.Net.Sockets.TcpClient();
tcpClient.Connect(IPAddress.Parse(ipAddr), port);

远程客户端在最后一行上遇到异常。具体错误:

An unhandled exception of type 'System.Net.Sockets.SocketException occurred in System.dll

Additional information: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.

服务器正在同一端口创建连接,但在本地主机IP 127.0.0.1上,以供参考。

我已经尝试在我的路由器(TCP)上转发端口,以及在我的防火墙中打开TCP的入站和出站端口(我知道这是不可持续的 - 只是试图让它在当前工作)

我非常有信心问题是远程客户端无法看到服务器,但在端口上执行netstat表示它在服务器运行时正在侦听,并且在连接本地客户端时正在运行。通过Canyouseeme检查端口确实说端口没有打开,所以我只是以某种方式错误地转发端口?

有什么建议吗?非常感谢!

1 个答案:

答案 0 :(得分:2)

  

服务器在同一端口上以类似的方式创建连接,但在localhost IP 127.0.0.1上,以供参考。

服务器绑定到环回地址。因此,当您从与服务器运行相同的计算机的客户端连接时,连接成功。如果客户端在服务器的计算机外部,则无法连接到另一台计算机上的127.0.0.1上的服务器。

将服务器绑定到可从客户端访问的有效IP地址。