gpt4 book ai didi

c++ - 连续性多个 WSASend() io 完成端口

转载 作者:太空宇宙 更新时间:2023-11-04 13:14:10 24 4
gpt4 key购买 nike

在来自服务器的 IO 完成端口中使用 TCP,如果我在同一个套接字中连续两次 WSASend,第一个发送“ABC”,第二个发送“DEF”,然后当我调用 GetQueuedCompletionStatus 它告诉我第一个 WSASend 只发送了“AB” 然后我再次调用 GetQueuedCompletionStatus 它告诉我第二个 WSASend 发送“DEF”,客户端是否要接收“ABDEF”?还是第二个 WSASend 会因为第一个 WSASend 消息不完整而失败?

最佳答案

接收方将不会收到 ABDEF,因为这意味着违反了流的完整性。

如果您在 ABC 和 DEF 上(按此顺序)发出 WSASend() 并且您得到 ABC 的 2 个字节和 DEF 的 3 个字节的完成,接收方可能没有收到任何东西,A,AB,ABC,ABCD,ABCDE , 或 ABCDEF。不过,很可能他们除了 AB 之外没有收到任何东西。

当您完成 WSASend() 指示除完整发送之外的任何内容时,您应该终止套接字。 closesocket() 确实是你应该做的最后一件事;在此之前,您应该清空所有未完成的发送和接收(CancelIoEx()、shutdown() 等)。

关于c++ - 连续性多个 WSASend() io 完成端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38242135/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com