mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2024-12-25 15:41:05 +00:00
43 lines
1.1 KiB
Java
43 lines
1.1 KiB
Java
|
import java.net.InetAddress;
|
||
|
import java.net.UnknownHostException;
|
||
|
import java.nio.ByteBuffer;
|
||
|
|
||
|
import fr.free.miniupnp.libnatpmp.NatPmp;
|
||
|
import fr.free.miniupnp.libnatpmp.NatPmpResponse;
|
||
|
|
||
|
class JavaTest {
|
||
|
public static void main(String[] args) {
|
||
|
NatPmp natpmp = new NatPmp();
|
||
|
|
||
|
natpmp.sendPublicAddressRequest();
|
||
|
NatPmpResponse response = new NatPmpResponse();
|
||
|
|
||
|
int result = -1;
|
||
|
do{
|
||
|
result = natpmp.readNatPmpResponseOrRetry(response);
|
||
|
try {
|
||
|
Thread.sleep(4000);
|
||
|
} catch (InterruptedException e) {
|
||
|
//fallthrough
|
||
|
}
|
||
|
} while (result != 0);
|
||
|
|
||
|
byte[] bytes = intToByteArray(response.addr);
|
||
|
|
||
|
try {
|
||
|
InetAddress inetAddress = InetAddress.getByAddress(bytes);
|
||
|
System.out.println("Public address is " + inetAddress);
|
||
|
} catch (UnknownHostException e) {
|
||
|
throw new RuntimeException(e);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public static final byte[] intToByteArray(int value) {
|
||
|
return new byte[] {
|
||
|
(byte)value,
|
||
|
(byte)(value >>> 8),
|
||
|
(byte)(value >>> 16),
|
||
|
(byte)(value >>> 24)};
|
||
|
}
|
||
|
}
|