使用 IOCP 时,如果我使用 2 KB 的数据调用 WSASend()
。当我收到完成通知时,这个完成通知是否表明整个 2 KB 已发送,或者可能有一些字节未发送?
最佳答案
在正常情况下,是的,只要套接字使用重叠 I/O,您的完成将收到整个 2 KB 已发送的通知。
唯一可能返回小于发送数据大小的情况是连接在发送过程中终止;在这种情况下,它返回发送的部分字节数。
如果不使用重叠 I/O,并且传输缓冲区没有足够的空间来接收整个写入,则它可能会返回部分写入。
根据我的经验,这种情况很少被处理,因为被终止的连接通常会调用一些其他错误处理,并且您很少可以对发送的字节数做任何有用的事情。
关于c++ - 当我调用WSASend()时,所有数据都会被发送吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28675811/