我有一个问题我自己无法自己回答,在NAT后面,可以通过手动设置“响应”端口而不是短暂的端口来进行UDP打孔,这样你就不必使用中间服务器?

我将更好地解释一下,在Java中你可以选择创建套接字时客户端将设置的端口以便从服务器接收响应,如果我想托管服务器而没有端口转发PC1中的端口7777,该怎么办?它工作如果:

PC1 Server :使用7777作为源端口发送UDP数据包到7776端口和客户端的目标IP地址,以便NAT期望从此IP连接到7777,显然这将被拒绝,但NAT不会知道这一点,然后在发送这个数据包之后,你可以在PC2发送我想发送的响应数据包之前快速启动同一个7777端口上的服务器"Manually"

PC2 Client: (也可以在NAT后面):使用7776作为源端口连接到服务器,7777作为目标,在PC1启动7777服务器之后,NAT在其表上删除了孔 .

如果这样可以工作,因为你必须同时发送这些数据包,这可以通过TCP实现吗?我甚至不能真正想到在Java中实现它,我在编程套接字方面并不擅长 .