2011-09-04 161 views
0

刚刚对我在java中编写的简单聊天程序提出了问题。 该程序使用TCP从服务器/客户端来回传输简单的消息字符串。它适用于我的网络上的所有计算机。但是当我把它发送给我的一个朋友,看看它是否从他的电脑上工作,它没有。所以我的问题是:我是否需要添加一些特定的代码,以允许来自外部网络的其他合成信息的消息被接收?或者它是防火墙的一种?Java中的简单网络聊天

+0

你的服务器在哪里?在你的网络之外还是之内? – Whiler

+0

在我的网络 –

回答

1

可能是防火墙或路由器。

防火墙:端口未打开。

路由器:消息不会转发到承载您的应用程序的机器。

或者您的应用程序使用内部IP,而不是IP从互联网(其中必须被转发到您的内部IP)

+0

感谢您的快速响应:)不,运行服务器应用程序的计算机不在路由器后面,但是用于从客户端程序(我的朋友)接收消息的IP是此计算机的内部IP。所以只为了澄清,我从这里做什么? –

+0

不是那么容易... 如果你想能够与他聊天,你可以使用外部IP并将端口路由到各自的机器... 但是,这将不再适用于您的机器... 其他的解决方案,其作品无处不在..你每一个客户。该客户端发送的端口,它们所听上启动一个TCP监听器,服务器......你路线**不同的端口**您的不同机器......或者你只是从服务器拉取消息,检查它是否适用于这个用户/机器......并将消息推送给用户到服务器...... – Whiler

0

上不是如果不指定任何在计算机码特内部网络,那么它将不会以不同的方式处理它们。它不会自己处理不同的连接。我会检查你的(或他的)路由器并打开你使用的任何端口。