【问题标题】:Simply opening a port in Java只需在 Java 中打开一个端口
【发布时间】:2013-01-20 00:25:44
【问题描述】:

我正在编写一个程序,该程序需要两台机器通过 TCP 相互通信。

我对 java.net Socket 类和相关的东西有(非常)基本的了解。我担心路由器/防火墙会阻塞连接。我需要做的就是打开一个端口,以便使用 Java STL Socket 类。

一个朋友告诉我要考虑使用 upnp,另一个关于 upnp 的 stackoverflow 问题建议使用 Cling。作为一个网络编程新手,Cling 对此似乎有些矫枉过正(而且我还不够先进,无法完全理解手册)。

如果我问错了问题,看错了地方等,我很抱歉。我要做的就是连接两台机器来来回发送一些浮点数,而无需手动进入我的路由器并转发端口。

STL 中是否有任何东西可以自动执行此操作,或者任何简单的库?

【问题讨论】:

    标签: java sockets networking upnp


    【解决方案1】:

    第一件事:Java 中没有“STL”这样的东西。您可能指的是基本的 Java SDK。

    其次,您要求“简单的方法”来执行一项操作,从网络的角度来看,这根本不是微不足道的。查看您的一个程序(程序 A)必须执行的最基本任务:表示其“目标”(程序 B)的网络位置。如果程序 B 在路由器后面,您对程序 B 的网络位置了解多少?没有。你只知道路由器的地址。

    与防火墙相同。您担心防火墙会阻止您的连接吗?好吧,如果您的防火墙好用,那么您希望它们阻止除预先批准的连接之外的所有连接。

    对于由 NAT 分隔的程序,执行所需操作的唯一明智方法是使用 UPnP。如果 Cling 太过分了,试试weupnp 之类的东西。

    不过,没有免费的午餐。

    如果程序 A 和程序 B 之间没有网络“屏蔽”设备(例如路由器),那么使用 Java SDK 进行的非常简单的 TCP/IP 编程应该可以正常工作。如果一路上有网络设备,您将不得不通过配置设备或使用 UPnP 来应对它们。

    【讨论】:

    • 这一天我一直在玩弄 weupnp,这绝对是我需要的。非常感谢。
    【解决方案2】:

    我会仔细阅读以下教程:http://www.giantflyingsaucer.com/blog/?p=224

    这里的想法是一个名为 xsocket 的库创建在新信息到达时触发的事件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-01
      • 1970-01-01
      • 2012-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多