那位大哥有这方面的源码啊,简单的demo就行,我找了好多资料都没找到,我用的是阻塞式的,当socket的正常断开或意外断开,都可以通过消息响应及时的自动重连
解决方案 »
- 创建多个 数据库连接,想要断开指定数据库连接,断开不了
- 读XML出现问题
- 求救:虚拟机可以上网,本机上不了,那位高手帮忙解决!
- VC中提示 写入位置 0x00000000 时发生访问冲突 怎么回事
- 关于求解数学公式的,如果2边都有未知数,应该怎么办阿
- 哪位大哥大姐能够提供一套(2个)可以用在ie工具栏上的图标呢,我的hoticon就是不肯露面
- 又中毒了,怎么办呀,病毒是email 传过来的,每次开机后就自动关机,注册表中已经清除?急急急!!!
- 作过服务程序的高手请进!!!!
- c++基础代码,工程间共用的问题
- Opencv和vc2010的配置问题
- 树控件TVS_CHECKBOX风格,如何代码控制打钩?SetCheck()不起作用?
- 怎么把两个bmp合成一个bmp?
TCP还用整心跳?
阻塞模式下, recv函数返回-1就说明网络断开了,然后就可以重连;非阻塞模式下,根据WSAGetLastError()的值来判断网络断开
有没有写过网络编程?断开后操作系统会告诉你,你查询套接字的状态会得到异常,或者当发现函数失败WSAGetLastError的时候也会得到内核的通知。
int nSend = Send4IntMsg(sock, (char*)(LPCTSTR)strSendBuf, strSendBuf.GetLength(), errMsg);
if (nSend < 0) // 发送消息失败
closesocket(sock);
重新连接就可以了这个在一个线程里,循环检测就OK了!
我写TCP编程也写了不少,断线重连也搞过,从来不用心跳,UDP和B/S编程才用到过
如果tcp连接建立好了,很长时间不发送数据,连接依然能保持
如果这个时候把网线断开,过段时间再插上,这个时候那个连接还存在吗?还能继续通讯吗?
我记得貌似是不能的,你的SOCKET句柄被破坏了。