对于已经投递的WSARecv,如何取消并释放overlapped空间

亚细亚 2019-06-27 04:19:03
在IOCP编程中,客户端已经和服务器端建立了连接;
在socket上投递了:WSARecv(socket, &wsabuf, 1, NULL, &flags, ovl, NULL)
其参数ovl是:(WSAOVERLAPPED *)calloc (1, sizeof(WSAOVERLAPPED));

现在我要关闭socket,并且要释放ovl空间;
closesocket(socket);
free(ovl);
结果提示错误:


查了好多资料,都没有具体的解决方法;
...全文
289 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgl7903 2019-07-02
  • 打赏
  • 举报
回复
个人建议, 用一个列表管理socket句柄和对应的overlape, closesocket 后对对应的列表项置一个关闭标志 在 WSARecv 之前检查不要再使用再列表中的标记为关闭的socket 中 WSARecv 之后扫描标记的列表,删除和释放对应的列表项

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧