nodejs / nodejs-zh-CN

node.js 中文化 & 中文社区
https://nodejs.org/zh-cn/
Other
395 stars 99 forks source link

为啥 net.socket.write不支持直接写入Buffer数组。 #179

Closed onexianjian closed 8 years ago

onexianjian commented 8 years ago

我最近在用node.js写一个tcp服务框架程序的时候发现net.socket.write方法里面不支持写入Buffer数组。而node.js所使用的libuv的网络库中是支持一次性写入多个Buff的。 int uv_write(uv_write_t* req, uv_stream_t* handle, const uv_buf_t bufs[], unsigned int nbufs, uv_write_cb cb)。我很想知道net.socket.write会不会支持一次写入Buffer数组。这个理论上实现应该不难的。支持这个功能很有必要,因为在网络通信中,这样可以在node.js的程序就不必把多个Buffer全部拷贝成一个Buffer。TCP程序在处理粘包和半包的问题上,对收到的数据就可以不用复制直接通过Buffer的slice将要发送的数据组织成有序的多个Buffer。直接发送出去。而js层从头到尾的操作都不会进行内存的拷贝。

JacksonTian commented 8 years ago

你可以试试 writev 方法。