簡體   English   中英

通過TCP將數據從Node.js發送到Java

[英]Sending data from Node.js to Java over TCP

我正在嘗試通過TCP套接字(使用protobuf序列化)將消息(字節數組)從Node.js發送到Java。

我在Java端創建一個服務器套接字,然后從Node連接到它:

var client = net.createConnection(12345, "localhost")

client.addListener("connect", function(){
    client.write(serializedMsg1)
    client.end(serializedMsg2)
})

在Java方面,我從輸入流中獲取內容並反序列化它:

Protocol1.parseFrom(inputStream);
Protocol2.parseFrom(inputStream);

問題在后面-看起來只有serializedMsg2被傳遞/反serializedMsg1 ,而serializedMsg1被忽略。 據我了解,它的發生是因為字節流沒有定界,並且數據塊的大小應明確指定。 不應直接從Java端的流中讀取數據-應當首先讀取經過修飾的塊,然后再將其反序列化為字節數組。

您可以使用Buffer來將要寫入的數據塊的大小傳遞給流:

function writeInt(stream, int){
   var bytes = new Array(4)
   bytes[0] = int >> 24
   bytes[1] = int >> 16
   bytes[2] = int >> 8
   bytes[3] = int
   stream.write(new Buffer(bytes))
}

...

writeInt(client, data.length)
client.write(data)

在Java方面:

int size = inputStream.readInt();
byte[] result = new byte[size];
inputStream.read(byteArray);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM