socket.write(buffer)方法写入的buffer不能指定偏移和长度,导致整个buffer数据都会传过去,我想创建一个很大buffer来填充数据而不是每次发送消息都创建个新的buff,有什么解决办法吗
貌似没有,我也是直接创建个新buff
@lovegnep 这么频繁的创建没问题么
@243011068 项目上没有这么做。我们消息体的长度是固定的,只需要分配一次就行了。如果有多种长度的消息,可以提前分配好。
@lovegnep 感谢回答,我这边消息体长度是变化的,这种方法应该不适用
man了下linux的send函数: ssize_t send(int sockfd, const void *buf, size_t len, int flags);
send
ssize_t send(int sockfd, const void *buf, size_t len, int flags);
the message is found in buf and has length len.
OS提供的接口不支持偏移但是支持长度,在linux上用c写socket程序的时候我就试过建立一个很大的buff,然后每次send的时候重用这个buff并且指定len。不过node可能出于某些原因没有封装成系统api的样子。
@youth7 那就只能每次都创建拉
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
貌似没有,我也是直接创建个新buff
@lovegnep 这么频繁的创建没问题么
@243011068 项目上没有这么做。我们消息体的长度是固定的,只需要分配一次就行了。如果有多种长度的消息,可以提前分配好。
@lovegnep 感谢回答,我这边消息体长度是变化的,这种方法应该不适用
man了下linux的
send函数:ssize_t send(int sockfd, const void *buf, size_t len, int flags);OS提供的接口不支持偏移但是支持长度,在linux上用c写socket程序的时候我就试过建立一个很大的buff,然后每次send的时候重用这个buff并且指定len。不过node可能出于某些原因没有封装成系统api的样子。
@youth7 那就只能每次都创建拉