我将使用STUN作为我的遍历NAT解决方案,并遇到JSTUN。虽然我搜索了arround stackoverflow,但我发现这篇文章提到JSTUN在源代码中有其文档:Java and Which Stun libraries i should use?
然而,http://javawi.de/上的来源被打破,然后我找到了下载JSTUN代码https://github.com/tking/JSTUN的替代方法
所以我在这里要求提供文件,如果有人愿意给我,并想知道它是如何运作的:
1.de.javawi.jstun.test.demo.StunServer要求我提供2个ip和端口。在我看来,STUN服务器是一种提供“打孔”服务的方式,为什么需要2个ip和端口?
2.运行de.javawi.jstun.test.demo.DiscoveryTestDemo后,它会返回ip,这是什么意思?
No route to host
java.io.IOException: No route to host
No route to host
at java.net.PlainDatagramSocketImpl.send(Native Method)
at java.net.DatagramSocket.send(DatagramSocket.java:625)
at de.javawi.jstun.test.DiscoveryTest.test1(DiscoveryTest.java:96)
at de.javawi.jstun.test.DiscoveryTest.test(DiscoveryTest.java:64)
at de.javawi.jstun.test.demo.DiscoveryTestDemo.run(DiscoveryTestDemo.java:48)
at java.lang.Thread.run(Thread.java:680)
java.io.IOException: No route to host
at java.net.PlainDatagramSocketImpl.send(Native Method)
at java.net.DatagramSocket.send(DatagramSocket.java:625)
at de.javawi.jstun.test.DiscoveryTest.test1(DiscoveryTest.java:96)
at de.javawi.jstun.test.DiscoveryTest.test(DiscoveryTest.java:64)
at de.javawi.jstun.test.demo.DiscoveryTestDemo.run(DiscoveryTestDemo.java:48)
at java.lang.Thread.run(Thread.java:680)
Network interface: en0
Local IP address: 192.168.1.23
Result: Port restricted Cone NAT handles connections.
Public IP address: 116.48.14.100
此致
史蒂夫
答案 0 :(得分:0)
这是我对NAT遍历的理解:
您拥有外部“广域网”IP地址(WAN),您可以在此处找到:http://www.mywanip.com/。此IP由路由器暴露给互联网。 您还有一个内部IP地址,受路由器保护。它可能会读取192.168.x.x。
答案 1 :(得分:0)
DiscoveryTestDemo,返回您的公共IP和公共端口,如您提供的击晕服务器所示,还可以告诉您背后的路由器类型。 (这是STUN的用途)
对于打孔,您必须编写自己的代码。 UDP打孔很容易,您可以轻松找到它的资源。 这是TCP打孔的一个很好的链接: http://ramonli.blogspot.in/2012/03/tcp-hole-punching-how-to-establish-tcp.html