2013-04-24 3 views
2

UDP 패킷, userID (int), 인증 코드 (문자열) 및 이진 데이터로 보내는 데 필요한 3 가지 정보가 있습니다.NodeJS 버퍼 분할, 문자열 및 이진

어떻게하면 그 항목을 한 번에 보낼 수 있고 다른 쪽 끝을 나눌 수 있습니다.

정보와 함께 3 개의 버퍼를 연결하려고했지만 UID와 인증 코드의 길이가 달라지기 때문에 다른 쪽 끝에서 정보를 분할하는 방법을 찾아 낼 수 없습니다.

답변

2

은 다음

  • 사용자 ID 적용하는 것이 가정 - 부호없는 32 비트 정수를
  • 인증 코드 - ..

포장 - 문자열 였을는의 100 개 문자 길이를
  • 이진 데이터를 가정 해 봅시다
    var BinaryData=/*Your binary data*/; 
    var bufToSend = new Buffer(3+100+BinaryData.length); 
    bufToSend.writeUInt32LE(INTEGER,0); 
    bufToSend.write(STRING,4,STRING.length,"ascii"); 
    BinaryData.copy(bufToSend,105,0,BinaryData.length); 
    

    개봉

    var userID = bufFromUDP.readUInt32LE(0); 
    var authCode = bufFromUDP.slice(4,104); 
    var BinaryData = bufFromUDP.slice(105,bufFromUDP.length); 
    

    또한 필드 사이에 "구분 기호"를 추가 할 수 있습니다. 전의.

    var sep = new Buffer(2); 
    sep.write(";",0,1,'ascii'); 
    

    각 필드 다음에 Buffer.concat([userID,sep,authCode,sep]);을 수행하면 sep 바이트가 추가됩니다.