Я новичок в WebRTC Android, используя jStun с кодом ниже, я могу получить Public IP и порт моих устройств Android.
new Thread() {
@Override
public void run() {
super.run();
try {
MessageHeader sendMH = new MessageHeader(MessageHeader.MessageHeaderType.BindingRequest);
ChangeRequest changeRequest = new ChangeRequest();
sendMH.addMessageAttribute(changeRequest);
byte[] data = sendMH.getBytes();
s = new DatagramSocket(4500);
s.setReuseAddress(true);
DatagramPacket p = new DatagramPacket(data, data.length, InetAddress.getByName("stun.l.google.com"), 19302);
s.send(p);
DatagramPacket rp;
rp = new DatagramPacket(new byte[32], 32);
//Recieve Packet from Stun Server
s.receive(rp);
MessageHeader receiveMH = new MessageHeader(MessageHeader.MessageHeaderType.BindingResponse);
receiveMH.parseAttributes(rp.getData());
final MappedAddress ma = (MappedAddress) receiveMH
.getMessageAttribute(MessageAttribute.MessageAttributeType.MappedAddress);
//Show Public IP and Port On Text View
runOnUiThread(new Runnable() {
@Override
public void run() {
TextView myIp = findViewById(R.id.listeningIp);
TextView myPort = findViewById(R.id.listeningPort);
myIp.setText(ma.getAddress().toString());
myPort.setText(ma.getPort() + "");
}
});
while (true) {
byte[] b = new byte[1024];
DatagramPacket rr = new DatagramPacket(b, 0, b.length);
//This Recieve Aimed to Recieve from Laptop Packet Sender
s.receive(rr);
final String sss = new String(rr.getData());
Log.e("recieved", sss);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
Публичный IP-адрес и порт устройства Android: 39.41.148.77:4500
Но когда я отправляю пакет с программного обеспечения для отправки пакетов с ноутбука на Android (39.41.148.77:4400), он не был получен.
Любое руководство приветствуется. Спасибо