用node.js重新组装udp消息

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

我收到的UDP数据包被分成多个消息。 我无法弄清楚如何重新组装信息。 我可以连接每封邮件,但是如何知道邮件已完成? 我需要处理这些数据,但我需要完成消息。

FYI …这是一个记分牌types的应用程序。 统计正在通过UDP广播,我试图创build一个应用程序,将监测统计。

这里是一些基本的代码

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 

你有控制客户吗? 如果是这样,你可以简单地有一些符号来标识消息的结尾,你的程序可以检测到msg是否msg结束。

但是,UDP套接字是不稳定的 – 不能保证任何消息实际到达。 也不能保证你的数据报将按你发送的顺序到达。 纠正这些问题比较复杂 – 如果你不需要实时的需求,那么切换到TCP就容易多了。

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