我有一个简单的java编写的客户端和服务器聊天应用程序(带套接字)。在同一个网络/计算机上运行时,它可以正常工作。但是,当我尝试从不同的网络运行客户端时,它无法连接。我尝试使用服务器的公共IP地址将客户端连接到服务器,但没有运气。我如何能够从不同的网络连接到服务器应用程序?任何帮助将不胜感激。
答案 0 :(得分:2)
听起来你有更多的防火墙问题,而不是应用程序的问题。不要尝试连接Java客户端,首先尝试从同一台计算机连接Telnet到服务器,然后从另一台计算机连接。第一项工作将向您展示它的工作原理。例如,如果您的服务器在端口999上运行,请使用telnet server.example.com 999
。
如果计算机是Linux机器,请使用iptables -L
查看您尝试访问的端口上是否有阻止。
如果您仍然无法访问服务器,请在服务器主机上运行tcpdump -i tcp:999
以查看进入服务器套接字的流量,然后再次运行telnet命令。您应该看到从本地计算机连接时建立的tcp连接,从其他计算机连接时可能或不可能。如果您在从其他计算机连接时没有看到它,请在那里运行tcpdump
以确保客户端确实将流量发送到服务器。
在您确定服务器可以接收流量并且您的客户端正在发送流量之后,对于实际发生的事情并没有任何疑问,您应该找到问题。
答案 1 :(得分:1)
在路由器上进行端口转发后,它工作正常。大多数ISP提供的调制解调器/路由器不会让你操纵端口,所以不得不购买我自己的调制解调器/路由器,转发端口和工作就像一个魅力。有关端口转发的信息,请访问:http://www.howtogeek.com/66214/how-to-forward-ports-on-your-router/