我做了這一個Java客戶端發送的圖像的簡單的NodeJS TCP服務器:的NodeJS TCP服務器,昂達小塊
encodedImage = <a base64 encoded image>
out.write("IMG;" + encodedImage);
out.flush();
我的NodeJS服務器如下:
net.createServer(function(TCPSocket){
TCPSocket.on("data", function(data){
console.log("TCP Recieved: " + data.length);
});
}).listen(5000);
然而,即使我發送的所有數據,並立即進行沖洗,輸出如下:
TCP Recieved: 13
TCP Recieved: 1344
TCP Recieved: 1344
TCP Recieved: 1344
TCP Recieved: 1344
TCP Recieved: 1344
TCP Recieved: 1472
TCP Recieved: 1344
TCP Recieved: 1344
TCP Recieved: 1344
TCP Recieved: 1344
我希望它接受她在一個簡單的塊,但我假設由於NodeJS的事件處理機制而發生這種情況,爲單個塊發送的數據實現單塊數據的最佳方式是什麼?據我所知,TCP窗口可能比1344字節的數據大得多。我想使用標頭值作爲HTTP,所以我知道長度廣告構建我想要的對象。
這是向TCP作品。不僅在節點上,而且在任何地方。你無法控制這一點。你不應該嘗試。在編寫tcp服務器時,總是假定數據以隨機大小的塊進入。 – 2013-05-02 00:18:44
是的,我知道TCP是一個流媒體協議,但我想知道是否有一種方法來觸發事件時接收特定數量的數據,如Java的套接字讀取,但我需要做一個緩衝機制 – Mustafa