java—解决NAT的最有效方法?

wkftcu5l  于 2021-07-09  发布在  Java
关注(0)|答案(0)|浏览(170)

我正在尝试建立一个分布式系统,每个节点都有自己的服务器和客户机。让一个节点的服务器客户端为server和aclient,第二个节点的服务器客户端为bserver和bclient。
目前,该操作是这样的,aclient从任何空闲端口(比如y)发送数据包,并且总是监听(使用服务器)特定端口(比如x)。bserver端总是在预定义的端口x回复数据包地址。
这在nat后面不起作用,因为nat创建了端口Map。因为用于nat的x可能没有Map到正确的aclient,所以这些是我想解决这个问题的解决方案和问题,
任何新的想法都是非常受欢迎的,我想听听所有这些想法的效率和易于实施的情况。
解决方案aclient从服务器侦听的端口发送数据包。bserver回复与apacket关联的端口(我试过了,但它显示了错误,我不确定udp是否是全双工的,也不确定套接字上的多个写操作处理得如何)
使用jpcap创建一个apacket,它的源端口是我监听的端口(比如x),并通过另一个端口(比如y)发送,这样当观察者回复apacket端口时,它就会到达我监听的端口(x)。
创建一个aclient线程,该线程侦听来自bserver的响应,然后在服务器侦听的端口上将该响应作为环回发送给自己(发送环回数据包的效率如何?)
创建一个aclient线程,该线程侦听来自bserver的响应,然后使用线程同步来防止从aclient和aserver接收的信息中同时写入要写入的对象。
恐怕答案是第四点。另外,如果需要的话,可以随意要求任何代码!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题