【问题标题】:Simple Network chat in JavaJava中的简单网络聊天
【发布时间】:2011-09-04 19:39:30
【问题描述】:

刚刚对我用 java 编写的一个简单的聊天程序提出了问题。 该程序使用 TCP 从服务器/客户端来回传输简单的消息字符串。它适用于我网络上的所有计算机。但是当我将它发送给我的一个朋友,看看它是否可以在他的计算机上运行时,它没有。所以我的问题是:我是否需要添加一些特定的代码以允许接收来自我网络外部的其他组合的消息?还是某种防火墙阻止了这种情况?

【问题讨论】:

  • 你的服务器在哪里?在您的网络外部还是内部?

标签: java networking tcp client


【解决方案1】:

可能是防火墙或路由器。

防火墙:端口未打开。

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

或者您的应用程序使用的是内部 IP,而不是来自互联网的 IP(必须转发到您的内部 ip)

【讨论】:

  • 感谢您的快速回复:)不,运行服务器应用程序的计算机不在路由器后面,但是是的,用于从客户端程序(我的朋友)接收消息的 ip 是内部 ip这台电脑。所以只是为了澄清,我从这里做什么?
  • 没那么容易...如果您想与他聊天,您可以使用外部 IP 并将端口路由到您各自的机器...但是,这将不再适用于您的机器...其他解决方案,它适用于任何地方..您在每个客户端上启动一个 tcp 侦听器..客户端将他们正在侦听的端口发送到服务器...您路由 不同的端口 到您的不同机器...或者您只从服务器拉消息,检查它是否适用于该用户/机器...并将消息推送给用户到服务器...
【解决方案2】:

如果您没有在代码中为不在内部网络上的计算机指定任何特殊内容,那么它不会以不同方式处理它们。它本身不会以不同的方式处理连接。我会检查您(或他的)路由器并打开您使用的所有端口。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-22
    • 1970-01-01
    • 2020-12-01
    • 2012-05-06
    • 1970-01-01
    相关资源
    最近更新 更多