在Android上侦听UDP消息(React Native)

时间:2017-02-01 08:32:56

标签: android react-native udp ip react-native-android

我正在使用这个模块:

https://github.com/tradle/react-native-udp

这是我的代码:

const Buffer = global.Buffer = require('buffer').Buffer;

const dgram = require('dgram')
const socket = dgram.createSocket('udp4');

socket.bind(12345, '10.0.0.24', function(){
    console.log('bound');
});

socket.once('listening', function() {
  console.log('listening');
})

socket.on('error', (err) => {
  console.log(`server error:\n${err.stack}`);
});

socket.on('message', function(msg, rinfo) {
   console.log(`server got: ${msg} from ${rinfo.address}:${rinfo.port}`);
});

setInterval(function(){

socket.send(Buffer.from('xyz'), 0, 3, 12345,'localhost', function(err){
      err && console.error(err.stack || err);
   });

}, 2000);



export default socket;

它在Android上运行,但是我的UDP套接字服务器看不到消息 - 我的猜测是它没有绑定到正确的主机。

假设我的诊断正确,我的问题是:

  1. 如何在我的机器上找到我的Android设备的主机?
  2. 从我的Android运行时,如何查看主机的IP地址 - " localhost"在Android中可能与" localhost"不同在我的机器上?
  3. 从长远来看,我的Android设备需要能够看到我认为的本地wifi路由器的IP,因为我们正在从传感器向wifi路由器发送UDP传输,然后Android设备需要能以某种方式从中读取。

1 个答案:

答案 0 :(得分:1)

  1. 使用地址0.0.0.0绑定所有接口。但是,除非您使用网桥将其连接到主机网络,否则您将无法在虚拟设备上接收任何内容,并且使用库存模拟器看起来不太可能。尝试使用真实设备或使用genymotion。
  2. 您可以使用主机的IP地址。