繁体   English   中英

Node.js UDP客户端来处理来自udp服务器的响应

[英]Node.js UDP client to handle a response from a udp server

我正在尝试在node.js中编写一个应用程序,以向设备(具有udp服务器)发送udp请求,然后接收响应并显示它。 该设备以这样的方式工作:在其端口11220上收到请求后,设备立即返回响应。

下面的代码将udp请求发送到设备,设备立即返回响应(我可以在wirehark中看到它),但是我无法处理/显示已恢复的消息 或者至少我只是希望能够在收到设备回复后显示一条消息。 请让我知道我的代码中缺少的内容,或向我显示完整的代码来执行此操作。 非常感谢。

同样,我不喜欢使用socket.io等。

var PORT = 11220 ;
var HOST = '192.168.1.111';

var dgram = require('dgram');
var message = new Buffer(9);
var client = dgram.createSocket('udp4');
client.send(message, 0, message.length, PORT, HOST, function(err, bytes) {
    if (err) throw err;
    console.log('UDP message sent to ' + HOST +':'+ PORT);
    client.close();

});


client.on('listening', function () {
    var address = server.address();
    console.log('UDP Server listening on ' + address.address + ":" + address.port);
});

client.on('message', function (message, remote) {
    // CAN I HANDLE THE RECIVED REPLY HERE????
    console.log(remote.address + ':' + remote.port +' - ' + message);

});

只是偶然发现了这个问题,所以我想我会给出一个答案:

在您的client.send函数中,调用client.close(); 将关闭服务器和客户端之间的UDP连接。 因此,如果您想收听消息,则不要在发送消息后立即致电。

其次,loganfsmyth的评论提供了一些好的建议-您应该首先添加事件处理程序,然后发送消息。

最后,这是使场景正常运行所需的更改代码

var client = dgram.createSocket('udp4');

client.on('listening', function () {
    var address = client.address();
    console.log('UDP Server listening on ' + address.address + ":" + address.port);
});

client.on('message', function (message, remote) {

    console.log(remote.address + ':' + remote.port +' - ' + message);

});

client.send(message, 0, message.length, PORT, HOST, function(err, bytes) {

    if (err) throw err;
    console.log('UDP message sent to ' + HOST +':'+ PORT);

});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM