我想知道当tcp套接字发出“数据”时,是什么决定了数据的大小。事件如下,thx!
var client = new Socket(options);
client.on('data', chunk => {}); // what determines the size of chunk?
答案 0 :(得分:0)
块的大小不确定。
对于要接收的特定数量的数据,data
可以用大块发出一次,或者用小块发出多次。
答案 1 :(得分:0)
当带有IP packet
的{{1}}到达时,包含的数据将被推送到TCP segment
的内部缓冲区(duplex stream){{3} }。
如果net.Socket
处于流动模式,则net.Socket
添加的数据将随stream.push(chunk)
事件一起发送。因此,'data'
的大小与到达的chunk
的数据相对应。
但是,如果流暂停然后恢复,则之后释放的块将不会与单个TCP segment
中包含的数据相对应。
流内部缓冲区可以保存最高TCP segment
阈值的数据。
在此处查看有关highWaterMark
和buffering
的详细信息:
stream.push(chunk)