2016-06-21 8 views
3

に分割されています。サーバーコードはCで書かれ、クライアントコードはnodejsによって書き込まれます。 1つのバッファを送信すると、クライアントはこのバッファの2つの部分を受信することがあり、console.log関数は2回トリガされますが、うまく動作することがあります。 以下はnodejsコードとCコードです。 nodejsコード:nodejs'バッファは、私は、データを転送するためにTCPを使用している二つの部分

var client = new net.Socket(); 
client.on('data', function(data) { 
    console.log('data:', data) 
}); 

Cコード:

send(socket_file, buffer, strlen(buffer),0) 
+0

。サーバーが送信したメッセージ全体をアセンブルする必要がある場合は、内部のハウスキーピングを行う必要があります。 – robertklep

+0

@robertklepありがとうございました! – fiona

答えて

2

これは(パケット指向するUDPのように対立するものとして)ストリーム指向であるTCP、に典型的なプロトコル結局。

ネットワークへの1つの書き込みは複数の書き込みをまとめて配信することができる単一の書き込みが分割されることがあり、もう一方の端に1つの読み取りに等しいという保証はありません。

あなたはapplicatonレベルのメッセージ・プロトコルを追加する必要があります。彼らは複数の `data`イベント(+様々な他の人を)引き起こす可能性:ノードでの作業をストリーミングする方法です

関連する問題