2013-07-02 6 views
2

이제 node.js와 UDP를 시작합니다. UDP 패킷을 캡쳐 한 다음 출력을 포맷하려고합니다.node.js로 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 
+0

저는 이것이 아주 오래된 질문이라는 것을 알고 있습니다. 그러나 해결책을 찾았습니까? – betweenbrain

답변

0

가 클라이언트를 제어 할 수 있나요 몇 가지 기본적인 코드는? 그렇다면 단순히 메시지의 끝을 나타내는 일종의 기호를 사용할 수 있으며 프로그램은 msg이 끝나는 지 감지 할 수 있습니다.

그러나 UDP 소켓은 휘발성이입니다. 메시지가 실제로 도착할 것이라는 보장은 없습니다. 또한 전송 한 순서대로 데이터 그램이 도착한다는 보장은 없습니다. 이러한 문제를 해결하는 것은 더욱 복잡합니다. 실시간 요구 사항이 필요하지 않으면 TCP로 전환하는 것이 훨씬 쉽습니다.

TCP는 클라이언트에서 데이터를 보낼 때 데이터를 청크로 자동 분할하므로 동일한 메시지 끝 시스템을 사용해야하거나 소켓이 닫힐 때를 감지해야합니다.

+0

전송중인 데이터를 변경할 수 없습니다. 콘솔에 표시 할 때 표시되지 않는 정보가 메시지에있을 수 있습니까? 정보를 다시 연결하는 데 도움이 될만한 것이 있습니까? – chrissabato