只需在Java中打开一个端口

只需在Java中打开一个端口,java,sockets,networking,upnp,Java,Sockets,Networking,Upnp,我正在编写一个程序,需要两台机器通过TCP相互通信 我(非常)熟悉java.net套接字类和相关的东西。我担心路由器/防火墙会阻塞连接。我需要做的就是打开一个端口,以便使用JavaSTL套接字类 一位朋友告诉我要研究使用upnp,另一个关于upnp的stackoverflow问题建议使用。作为一名网络编程新手,Clang似乎在这方面做得太过火了(我还没有足够的能力完全理解手册) 如果我问错了问题、看错了地方等,我很抱歉。我只想连接两台机器,来回发送一些浮动,而不必手动进入路由器和转发端口 STL

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

我(非常)熟悉java.net套接字类和相关的东西。我担心路由器/防火墙会阻塞连接。我需要做的就是打开一个端口,以便使用JavaSTL套接字类

一位朋友告诉我要研究使用upnp,另一个关于upnp的stackoverflow问题建议使用。作为一名网络编程新手,Clang似乎在这方面做得太过火了(我还没有足够的能力完全理解手册)

如果我问错了问题、看错了地方等,我很抱歉。我只想连接两台机器,来回发送一些浮动,而不必手动进入路由器和转发端口


STL中是否有自动执行此操作的工具,或任何简单的LIB?

我将仔细阅读以下教程:


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

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

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

防火墙也是如此。你担心防火墙会阻塞你的连接?好吧,如果你的防火墙是好的,那么你希望他们阻止所有的连接,除了预先批准的连接

对于由NAT分隔的程序,唯一可行的方法是使用UPnP。如果粘住是一种过度的杀伤力,那么试试类似的方法

但是没有免费的午餐


如果在程序a和程序B之间没有网络“屏蔽”设备(如路由器),那么使用JavaSDK进行非常简单的TCP/IP编程就可以了。如果沿途有网络设备,您必须通过配置设备或使用UPnP来应对它们。

我今天一直在玩weupnp,这绝对是我所需要的。谢谢。