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

风中小百合 发布于 2014/05/08 22:47
阅读 1K+
收藏 0
你好,我用HPSocket4C.dll+VC6.0做了一个Socket服务端的应用。但我们的网络环境很不稳定,会在某些时间段出现严重丢包的情况,这时候,Socket服务端就会接收不到消息了,客户端也无法重新连接。网络正常的情况下,这种情况是不会发生的。请问这种情况可以怎么去解决?我用的是最新的版本的动态库3.2.1.0,谢谢。
加载中
1
伤神小怪兽
伤神小怪兽

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

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

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

伤神小怪兽
伤神小怪兽
http://www.oschina.net/question/1439718_141207
风中小百合
风中小百合
- - 小弟用VC6.0,编绎的时候缺很多头文件,我是看着delphi调用动态库的Demo很方便,照着写的。。。。
1
伤神小怪兽
伤神小怪兽
参考这里:http://www.oschina.net/question/1439718_141207
1
伤神小怪兽
伤神小怪兽
你是不是没有处理OnError事件?发生OnError就说明连接关闭了!
伤神小怪兽
伤神小怪兽
另外,不能在任何 OnXxx()事件线程中调用HP_Server_Stop(),因为HP_Server_Stop()会循环等待所有IOCP工作结束,但这个线程永远不结束,导致死循环。
伤神小怪兽
伤神小怪兽
回复 @折__ : OnError 与 OnClose 都表明连接已关闭,OnClose怎么处理,OnError就怎么处理。。。参考 Demo
风中小百合
风中小百合
怪兽大哥,[198,OnError] -> OP:4,CODE:10054,有回调OnError事件,这是错误信息。报这个之后就接收不到socket信息了,调HP_Server_Stop()函数会造成cpu 99%卡死。难道服务端OnError之后就只能重启客户端了??
返回顶部
顶部