2012-06-28 50 views
1

我想通过互联网获得TCP/IP连接。我已经有两个类,一个处理请求的tcpserver和一个连接,发送和接收数据的tcpclient。Java TCP/IP服务器 - 通过互联网的客户端通信

到现在为止,我已经完美地在本地网络上工作。通常的127.0.0.1/localhost和我的192.168.xxx.xxx地址没有给出任何问题。

我的问题是,我必须做些什么才能使其通过互联网工作。正如我可能想要做一些涉及一个简单的http /服务器的研究,我需要这个工作。

我怀疑它的防火墙,但也许它的ISP阻止了这种连接。任何人有想法?

回答

0

您需要在路由器中打开一个端口,导致服务器正在侦听端口。然后,您连接到您的公共IP。这个ip可以在http://www.visaminip.se/

+0

请看我的代码(当然它的多线程;): tcpcserver t = new tcpserver(8000); Thread.sleep(100); tcpclient c = new tcpclient(“31.151.xxx.xxx”,8000); 我在同一个项目的同一台计算机上运行它。但就像一个单元测试这应该工作,对吗?或者,也许它不能通过互联网连接到我自己的电脑。 –

+0

您应该使用您的网关地址连接到您的调制解调器/路由器。打开命令提示符,键入ipconfig。查找“标准网关”并在浏览器中输入。这将提示登录窗口,您需要输入您的凭据。如果你没有改变这些,通常是:login = admin,password = 1234或密码或admin。这也印在手册中。当您到达该页面时,您可以配置您的路由器设置。在这里你需要打开服务器正在监听的端口 –

0

要通过互联网提供服务,您需要一个公共IP地址。 10.x.x.x和192.168.x.x是专用网络。 127.x.x.x仅适用于本地计算机。

客户端可以连接到特定端口的公共IP地址。

服务器的调制解调器/路由器/防火墙允许此端口打开并将流量传送到该端口上的服务器。

+0

谢谢Peter,我已经通过使用'retrieve-my-ip'网站查找了我的公共IP。它开始于31.151.xxx.xxx,所以这可能是一个公共IP地址吗? –

+0

是的。而你的客户只需要访问互联网。另一方面,服务器需要设置防火墙以允许访问端口。 –

+0

我只是禁用了我的防火墙,但我不应该。无论如何,我做了一些在线端口扫描器检查,它说,所有通常的端口无法访问。也许我可以检查我的路由器设置的一些端口打开?如果情况并非如此,那么可能是我的Internet服务提供商阻止了所有人。 –