我希望你能帮助我。
我正在尝试通过TCP / IP在网络上发送1000位数据包,我希望能够在Cygwin和Windows中使用重叠I / O技术。
在Cygwin中,我试图使用“readv()和writev()”函数调用在Windows中发送1000位,我试图在winsock2中使用WSASend()和WSARecv()API。 h头文件。
似乎我只能从Cygwin(client.cpp)向Windows(server.cpp)发送1000位。超过1000位,我遇到意想不到的结果。似乎这些比特被包裹或覆盖。
我在互联网上搜索,但似乎没有人像我一样尝试使用这种方法,因此我正在寻求你的帮助。
谢谢你,最诚挚的问候, 科尼利厄斯
答案 0 :(得分:1)
如果你想在Windows上使用重叠的I / O,那么你可能想看看我在The Code Project中写的一些文章,这些文章可能会为你提供一个起点。它们使用IO完成端口,这是在Windows上进行重叠I / O的最有效方式,并提供完整的源代码。这些文章和最新来源here都有链接。
从您的简短问题描述中,很难确切地说出可能出现的问题。您最有可能假设您的读取将读取您正在编写的相同数量的数据,而这与TCP的情况不同; TCP是一个字节流,您的读取需要考虑到这一点并相应地循环,直到您重新组装完整的“消息”。
答案 1 :(得分:0)
你的问题很不清楚,你需要澄清一下。以下是一些想法,仍然是: