0

我必须实现一个(客户端)套接字,它需要在 Windows 7 服务器上运行的高吞吐量(> 800Mbps)和低延迟。重叠 IO 似乎是实现高性能的方法。

阅读有关该主题的一些文档,据我所知,重叠 I/O 的优点是您将一些带有缓冲区的结构传递给操作系统,并且当它们被填充时您会收到通知。

不,我想知道将其与基于数据包的协议(长度分隔的数据包,标头包含数据块的大小)结合起来的常见方法是什么,当然我可以读取任意数据块并将所需的字节数复制到消息结构中。这意味着额外的复制操作。

第二个选项可能是将消息结构作为具有标头大小的缓冲区传递,在将其返回后再次传递相同的结构以读取请求的数据字节数。在这种情况下,第一次读取的块很小,但数据被保存到消息结构中,当数据块读取处于挂起状态时,可以初始化下一个头块的读取。

任何经验或想法如何最有效地处理长度分隔的数据包?

谢谢,

4

1 回答 1

0

如果您知道数据包大小,请查看scatter/gather I/O 。

于 2013-01-29T19:51:35.110 回答