2

node.js と UDP を使い始めたばかりです。UDP パケットをキャプチャして、出力をフォーマットしようとしています。

受信している UDP パケットが複数のメッセージに分割されています。メッセージを再構成する方法がわかりません。各メッセージを連結できますが、メッセージが完全であることをどのように確認できますか? そのデータを処理する必要がありますが、メッセージを完成させる必要があります。

参考までに…これはスコアボードタイプのアプリケーション用です。統計は 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
4

1 に答える 1

0

クライアントを制御できますか? もしそうなら、メッセージの終わりを特定するある種のシンボルを持つことができ、あなたのプログラムはそれmsgで終わっているかどうかを検出することができます。

ただし、UDP ソケットは揮発性です。メッセージが実際に到着するという保証はありません。また、データグラムが送信した順序で到着するという保証もありません。これらの問題の修正はより複雑です。リアルタイム要件が必要ない場合は、TCP に切り替える方がはるかに簡単です。

クライアントからデータを送信すると、TCP は自動的にデータをチャンクに分割するため、同じメッセージ終了システムを使用するか、ソケットが閉じられたことを検出する必要があります。

于 2013-07-02T22:20:02.877 に答える