gpt4 book ai didi

c - 如何在不调用 GetQueuedCompletionStatus() 的情况下知道 WSASend() 操作是否已完成?

转载 作者:太空宇宙 更新时间:2023-11-04 08:06:35 25 4
gpt4 key购买 nike

当调用 WSASend() 时,我必须向它传递一个 WSAOVERLAPPED 实例,并且我不能重新使用这个 WSAOVERLAPPED 实例,直到先前的 WSASend() 操作已经完成(即当一个完成数据包被放置在完成端口时)。

有没有一种方法可以在不调用 GetQueuedCompletionStatus() 的情况下知道 WSASend() 操作是否已完成?

最佳答案

您需要将自己的套接字绑定(bind)到系统创建的 IOCP,因为当操作完成时,您的回调将被自动调用。你在这里有 2 个选项:

在你创建套接字之后

SOCKET socket = WSASocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, 0, 0, WSA_FLAG_OVERLAPPED)

您需要调用 BindIoCompletionCallback((HANDLE)socket, *,0)CreateThreadpoolIo((HANDLE)socket, *, 0, 0);

和所有。您根本不需要调用 GetQueuedCompletionStatus() 或等待

关于c - 如何在不调用 GetQueuedCompletionStatus() 的情况下知道 WSASend() 操作是否已完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42435801/

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