这是出于调试目的。
为了测试代码的短发送/短接收处理部分是否正常工作......
有没有办法强制 Windows 产生短发送/rcvs,即使是从套接字读取/写入的少量字节?
我更喜欢按进程执行此操作,但如果不能按进程执行此操作,我也准备测试 Firefox/Outlook 代码如何处理此问题。:)
Ofc 我知道我可以手动添加巨大的 msg 来强制执行此操作,但我正在处理具有多层内容的巨大旧代码库,因此即使添加一个简单的、充满随机字节的巨大 msg 也是不平凡的。:)
这是出于调试目的。
为了测试代码的短发送/短接收处理部分是否正常工作......
有没有办法强制 Windows 产生短发送/rcvs,即使是从套接字读取/写入的少量字节?
我更喜欢按进程执行此操作,但如果不能按进程执行此操作,我也准备测试 Firefox/Outlook 代码如何处理此问题。:)
Ofc 我知道我可以手动添加巨大的 msg 来强制执行此操作,但我正在处理具有多层内容的巨大旧代码库,因此即使添加一个简单的、充满随机字节的巨大 msg 也是不平凡的。:)
您可以更改使用的内部缓冲区的大小,recv()
并send()
通过使用缓冲区setsockopt()
的标志SO_RCVBUF
和recv()
缓冲区的标志SO_SNDBUF
来更改send()
。
你可以在这里找到一个例子。
编辑:您可能想要禁用 Nagle 的算法。在这种情况下,请查看mark的 anwser。
EDIT2:就像评论accept()
中所说的那样,在调用or之前更改缓冲区大小很重要connect()
。
如果你也在控制发送端,你可以禁用 Nagle 的算法并发送你想要的任何大小(没有写入累积)......
int flag = 1;
setsockopt( handle, IPPROTO_TCP, TCP_NODELAY, (char *)&flag, sizeof(int) );