0

这是出于调试目的。
为了测试代码的短发送/短接收处理部分是否正常工作......
有没有办法强制 Windows 产生短发送/rcvs,即使是从套接字读取/写入的少量字节?
我更喜欢按进程执行此操作,但如果不能按进程执行此操作,我也准备测试 Firefox/Outlook 代码如何处理此问题。:)

Ofc 我知道我可以手动添加巨大的 msg 来强制执行此操作,但我正在处理具有多层内容的巨大旧代码库,因此即使添加一个简单的、充满随机字节的巨大 msg 也是不平凡的。:)

4

2 回答 2

5

您可以更改使用的内部缓冲区的大小,recv()send()通过使用缓冲区setsockopt()的标志SO_RCVBUFrecv()缓冲区的标志SO_SNDBUF来更改send()

你可以在这里找到一个例子。

编辑:您可能想要禁用 Nagle 的算法。在这种情况下,请查看mark的 anwser。

EDIT2:就像评论accept()中所说的那样,在调用or之前更改缓冲区大小很重要connect()

于 2013-08-26T12:52:33.627 回答
3

如果你也在控制发送端,你可以禁用 Nagle 的算法并发送你想要的任何大小(没有写入累积)......

int flag = 1;
setsockopt( handle, IPPROTO_TCP, TCP_NODELAY, (char *)&flag, sizeof(int) );
于 2013-08-26T12:57:00.180 回答