HP-Socket在某种情况下不能接收消息

发布于 2021-11-22 09:15:20 字数 164 浏览 742 评论 10

你好,我用HPSocket4C.dll+VC6.0做了一个Socket服务端的应用。但我们的网络环境很不稳定,会在某些时间段出现严重丢包的情况,这时候,Socket服务端就会接收不到消息了,客户端也无法重新连接。网络正常的情况下,这种情况是不会发生的。请问这种情况可以怎么去解决?我用的是最新的版本的动态库3.2.1.0,谢谢。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(10

私藏温柔 2021-11-25 16:49:12

怪兽大哥,[198,OnError] -> OP:4,CODE:10054,有回调OnError事件,这是错误信息。报这个之后就接收不到socket信息了,调HP_Server_Stop()函数会造成cpu 99%卡死。难道服务端OnError之后就只能重启客户端了??

白龙吟 2021-11-25 16:49:01

回复
OnError 与 OnClose 都表明连接已关闭,OnClose怎么处理,OnError就怎么处理。。。参考 Demo

如此安好 2021-11-25 16:48:53

另外,不能在任何 OnXxx()事件线程中调用HP_Server_Stop(),因为HP_Server_Stop()会循环等待所有IOCP工作结束,但这个线程永远不结束,导致死循环。

孤独患者 2021-11-25 16:47:22

你是不是没有处理OnError事件?发生OnError就说明连接关闭了!

浮生未歇 2021-11-25 16:45:16

参考这里:http://www.oschina.net/question/1439718_141207

私藏温柔 2021-11-25 15:37:11

- - 小弟用VC6.0,编绎的时候缺很多头文件,我是看着delphi调用动态库的Demo很方便,照着写的。。。。

贱贱哒 2021-11-25 15:29:30

http://www.oschina.net/question/1439718_141207

少女净妖师 2021-11-25 15:24:22

另外,c++程序最好用hpsocket.dll,省心省力。

丢了幸福的猪 2021-11-25 15:02:19

怪兽大哥你好,根据测试,关闭心跳检测还是解决不了问题。我这大约有25个客户端,测试时间是10小时,每条信息的发送时间大约是200ms。socket信息处里是在OnReceive的回调函数里完成的,服务端接收不到信息后,调用HP_Server_Stop()函数没有反应,结束进程后再打开就正常了。不知这个是我的程序问题还是你们动态库的问题呢?

好听的两个字的网名 2021-11-25 14:38:23

关闭心跳检测或者延长心跳检测时间

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文