我正在编写一个程序,需要让两台机器通过TCP相互通信.
我对java.net Socket类和相关的东西有一个(非常)基本的熟悉.我担心阻止连接的路由器/防火墙.我需要做的就是打开一个端口以使用Java STL Socket类.
我被告知要调查朋友使用upnp,另一个关于upnp的*问题建议使用Cling.作为一个网络编程新手,Cling似乎有点矫枉过正(而且我还不够先进以完全理解手册).
我很抱歉,如果我提出错误的问题,查找错误的地方,等等.我想要做的就是连接两台机器来回发送一些浮动而无需手动进入我的路由器并转发端口.
STL中有什么可以自动执行此操作,还是任何简单的库?
解决方法:
首先要做的是:在Java中没有“STL”这样的东西.您可能是指基本的Java SDK.
其次,你要求“简单的手段”来执行一项操作,从网络的角度来看,这根本不是微不足道的.查看您的某个程序(程序A)必须执行的最基本任务:表示其“目标”的网络位置(程序B).如果程序B在路由器后面,您对程序B的网络位置了解多少?没有.你所知道的只是路由器的地址.
与防火墙相同.您是否担心阻止连接的防火墙?好吧,如果您的防火墙有任何好处,那么您希望它们阻止除预先批准的防火墙之外的所有连接.
对于由NAT分隔的程序,唯一明智的做法是使用UPnP.如果Cling是一个矫枉过正的话,可以试试像weupnp这样的东西.
但是,没有免费的午餐.
如果程序A和程序B之间没有网络“屏蔽”设备(例如路由器),则使用Java SDK进行非常简单的TCP / IP编程应该可行.如果沿途有网络设备,则必须通过配置设备或使用UPnP来应对它们.