关于完成端口中socket的关闭问题

梦断酒醒 2005-09-21 04:28:02
正在学完成端口,教程中的一个例子发现有点问题:
if (GetQueuedCompletionStatus(CompletionPort, &BytesTransferred,
(LPDWORD)&PerHandleData, (LPOVERLAPPED *) &PerIoData, INFINITE) == 0)
{
printf("GetQueuedCompletionStatus failed with error %d\n", GetLastError());
return 0;
}
if (BytesTransferred == 0)
{
printf("Closing socket %d\n", PerHandleData->Socket);

if (closesocket(PerHandleData->Socket) == SOCKET_ERROR)
{
printf("closesocket() failed with error %d\n", WSAGetLastError());
return 0;
}

GlobalFree(PerHandleData);
GlobalFree(PerIoData);
continue;
}
在工作线程中先用GetQueuedCompletionStatus等待,当BytesTransferred == 0成立时关闭socket,但是我发现,当客户程序关闭socket或退出时,GetQueuedCompletionStatus的返回值为0,这样就不会执行关闭服务器侧socket的代码了。

那么如何才能确保服务程序中的socket一定会关闭呢?
...全文
282 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
梦断酒醒 2005-09-23
  • 打赏
  • 举报
回复
看来只能这样了。
ximenying 2005-09-22
  • 打赏
  • 举报
回复
对,你也可以将你关心的其它信息也通过这种方式保存起来,肯定要自己计时啊,有什么不方便吗?我想很多游戏服务器可能会这样使用吧
梦断酒醒 2005-09-22
  • 打赏
  • 举报
回复
1.按楼上的说法,是不是做一个socket的列表才行?
2.那如何取得客户端上次发数据到现在的时间长度呢?是自己来计时吗?socket有没有现成的机制?
ximenying 2005-09-22
  • 打赏
  • 举报
回复
这个应该由服务器端来维护客户端的连接信息,当你发现某个客户端超过一段时间没有收发过数据,就应该将它关闭,客户端需要发送请求时让它重连
梦断酒醒 2005-09-22
  • 打赏
  • 举报
回复
请知道的指教一二,在下感激不尽!
梦断酒醒 2005-09-21
  • 打赏
  • 举报
回复
估计它的关闭是在程序退出的时候
==========================================

要是这样,服务程序不是运行不长就得重启了。资源浪费太严重了吧?
nuaawenlin 2005-09-21
  • 打赏
  • 举报
回复
return 0;
退出了线程

估计它的关闭是在程序退出的时候
内容概要:本文围绕“基于超局部模型与自抗扰ESO观测器的无模型预测电流控制改进策略”展开研究,提出一种结合超局部模型(ULM)与扩张状态观测器(ESO)的无模型预测电流控制(MFPCC)改进方法,旨在提升永磁同步电机(PMSM)电流环的动态响应性能与抗干扰能力。该策略利用超局部模型对系统行为进行局部逼近,避免依赖精确数学模型,同时引入自抗扰控制的ESO实时观测并补偿系统内外部扰动,有效抑制参数摄动、负载变化及模型不确定性带来的影响。研究通过Simulink搭建完整的控制系统仿真模型,对传统MFPCC与所提改进策略进行对比分析,验证了新方法在电流跟踪精度、响应速度和鲁棒性方面的优越性。; 适合人群:具备电机控制、现代控制理论及Simulink仿真基础的电气工程、自动化及相关专业的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于高性能电机驱动系统电流环控制器的设计与优化;②为无模型控制与自抗扰控制的融合应用提供技术参考;③支撑相关课题的仿真验证、论文复现与创新方法研究。; 阅读建议:建议读者结合Simulink仿真模型深入理解控制结构与参数整定过程,重点关注ESO的观测性能与扰动补偿机制,并可通过改变负载条件、参数偏差等工况进行鲁棒性测试,进一步掌握该改进策略的核心优势与适用边界。

18,357

社区成员

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

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