使用node.js重新组装udp消息

时间:2013-07-02 21:57:34

标签: javascript node.js udp datagram

我刚开始使用node.js和UDP。我正在尝试捕获UDP数据包然后格式化输出。

我正在接收的UDP数据包被分成多个消息。我无法弄清楚如何重新组合消息。我可以连接每条消息,但我怎么知道消息是完整的?我需要处理这些数据,但我需要完成消息。

FYI ...这是一个记分牌类型的应用程序。统计数据正在通过UDP广播,我正在尝试创建一个监控统计数据的应用程序。

这是一些基本代码

var dgram = require("dgram");
var server = dgram.createSocket("udp4");
var fs = require('fs');
var STATS;

server.on("message", function (msg, rinfo) {
STATS = STATS + msg;
msg = msg + '<!>';
console.log(msg);
  });

// *****************************
// When the message is complete
// Process STATS 
// *****************************

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

server.bind(10101);
// server listening 0.0.0.0:41234

1 个答案:

答案 0 :(得分:0)

您是否掌控了客户?如果是这样,您可以使用某种符号来标识邮件的结尾,并且您的程序可以检测msg是否以此结束。

但UDP套接字 volatile - 无法保证任何消息实际到达。我们也无法保证您的数据报按照您发送的顺序到达。纠正这些问题比较复杂 - 如果您不需要实时要求,那么切换到TCP会容易得多。

当您从客户端发送数据时,TCP会自动将数据拆分为块,因此您需要使用相同的消息结束系统,或检测套接字何时关闭。