c++ - IO 完成端口和套接字 WSARecv()

标签 c++ sockets winapi network-programming iocp

我想了解 IOCP 如何与套接字一起工作。我需要了解它们是否是这样工作的:

我创建了一个完成端口,它只是一个队列,当某些操作完成时将接收通知,然后我将我的套接字与它相关联,然后我处理传入的通知。

现在我想知道这与从套接字接收数据有什么关系,所以当我调用 WSARecv() 时到底发生了什么,WSARecv() 会立即返回吗当我调用它时(不阻塞),然后当数据到达 WSARecv() 时,我收到一条通知,说数据已收到?

最佳答案

是的,就是这样。

当您调用 WSARecv() 时,该函数将立即返回(请注意,您必须向它传递一个缓冲区来存储接收到的数据)。现在系统将读取从另一端接收到的数据并将其存储在提供的缓冲区中。当系统这样做时,它会在完成端口中放置一个通知,通知您读取操作已完成。

关于c++ - IO 完成端口和套接字 WSARecv(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28644276/

相关文章:

c++ - 即使我在 QStyledItemDelegate 中设置 Qt::TextSelectableByMouse,QLabel 文本也无法选择

c++ - 对一些数字已经排序的数组进行部分排序

Java多线程套接字客户端/服务器: sending and receiving Enummap objects

c - 将 LONG 除以 INT 并分配给 SHORT - 在一种情况下可能吗?

winapi - 窃取焦点,因为 SetForegroundWindow 做不到

c++ - shared_ptr 对容器的意义是什么?

c++ - 如何获得一个 friend 类的模板函数而不会出现错误

php - PHP中的套接字连接错误

sockets - 我需要关闭套接字吗?

c# - 如何以 CLR "friendly"方式获取_real_ 线程 ID?