Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java udp广播到NAT后面的客户端_Java_Sockets_Udp_Broadcast_Nat - Fatal编程技术网

Java udp广播到NAT后面的客户端

Java udp广播到NAT后面的客户端,java,sockets,udp,broadcast,nat,Java,Sockets,Udp,Broadcast,Nat,我想知道是否有办法通过udp套接字为NAT后面的客户端广播数据。我发现了许多示例,其中服务器向多播地址发送数据,而客户端在固定端口上侦听数据。但是,如果它们之间存在NAT,则需要将包发送到不同的端口,这取决于NAT如何创建端口转换,对吗?那么,这里的解决方案是什么呢?谷歌搜索UDP打孔应该会引导您走向正确的方向。这里描述了一种可能的算法:我已经读过了,但是我想知道是否有一个java示例。这种技术对于ex来说稍微复杂一些。需要传输额外的包来保持连接的有效性。不幸的是,我现在还不知道Java示例。你

我想知道是否有办法通过udp套接字为NAT后面的客户端广播数据。我发现了许多示例,其中服务器向多播地址发送数据,而客户端在固定端口上侦听数据。但是,如果它们之间存在NAT,则需要将包发送到不同的端口,这取决于NAT如何创建端口转换,对吗?那么,这里的解决方案是什么呢?

谷歌搜索UDP打孔应该会引导您走向正确的方向。这里描述了一种可能的算法:我已经读过了,但是我想知道是否有一个java示例。这种技术对于ex来说稍微复杂一些。需要传输额外的包来保持连接的有效性。不幸的是,我现在还不知道Java示例。你是对的,这是一个更复杂的方法-但不幸的是,NAT使它成为一个更难解决的问题,因为每个客户端可能不知道,事实上可能不知道NAT分配的端口。我确实遇到了一个实用程序,它似乎实现了类似上述算法的东西-但它是在C中,因此,显然会有一些语言/库的差异。不过还是有帮助的。祝你好运读了这篇关于udp打孔的文章后,我意识到我不太了解一些事情:当服务器将数据包更准确地发送回客户机的nat地址时,它会将该端口指定为nat的N端口,该端口是它最后发起的端口,还是它侦听的客户机端口?