无法通过TCP远程连接

时间:2019-05-31 22:38:20

标签: c# sockets tcp

我正在开发一个通过服务器的公共ip连接到端口9050的应用。在lan上可以正常工作,但是如果我连接到其他网络上,它会失败怎么办?

2 个答案:

答案 0 :(得分:1)

首先从命令提示符尝试此命令:telnet ip 9050 如果它正常工作,则意味着您的PC和服务器之间的端口9050已经打开,否则应检查阻止该端口的原因和位置(在这种情况下可能是防火墙,您需要在防火墙中创建规则才能通过。)

答案 1 :(得分:0)

我没有任何代码可以通过,我对您的网络配置一无所知,但我会告诉您调试启用网络的应用程序时通常要做什么。首先,查看您的防火墙规则。显然,这取决于您所使用的操作系统,但是在Windows 10上,特定于应用程序的权限位于Control Panel > System and Security > Windows Defender Firewall > Advanced Settings中。

确保您的应用程序可以通过设备的防火墙后,接下来请检查路由器设置。您的数据包可能无法通过适当的内置安全协议获得。由于您的程序适用于LAN,但不能通过Internet使用,因此这是一种明显的可能性。另外,根据您的网络配置,可能需要端口转发。如果您是通过公共IP地址发送数据,则路由器需要某种方式来了解本地网络上的哪个设备需要接收它。此外,如果您尝试从托管服务器的同一网络连接到服务器,请确保使用IP回送地址(我相信始终为127.0.0.1)或C#IPAddress.Loopback。连接到本地主机时,公共地址通常不起作用。


如果您仍然遇到问题,建议您使用Wireshark。这是一个高级诊断工具,可以准确地告诉您通过网络发送和接收的内容,并且可以帮助查明否则很难发现的问题。