我想了解 IOCP 如何与套接字一起工作。我需要了解它们是否是这样工作的:
我创建了一个完成端口,它只是一个队列,当某些操作完成时将接收通知,然后我将我的套接字与它相关联,然后我处理传入的通知。
现在我想知道这与从套接字接收数据有什么关系,所以当我调用 WSARecv()
时到底发生了什么,WSARecv()
会立即返回吗当我调用它时(不阻塞),然后当数据到达 WSARecv()
时,我收到一条通知,说数据已收到?
最佳答案
是的,就是这样。
当您调用 WSARecv()
时,该函数将立即返回(请注意,您必须向它传递一个缓冲区来存储接收到的数据)。现在系统将读取从另一端接收到的数据并将其存储在提供的缓冲区中。当系统这样做时,它会在完成端口中放置一个通知,通知您读取操作已完成。
关于c++ - IO 完成端口和套接字 WSARecv(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28644276/