如何判断一个TCP连接已经中断了? 多谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 #include <winsock.h>原型int select(int nfds,fd_set* readfds,fd_set* writefds,fd_set* exceptfds,const struct timeval* timeout);nfds:本参数忽略,仅起到兼容作用。 readfds:(可选)指针,指向一组等待可读性检查的套接口。 writefds:(可选)指针,指向一组等待可写性检查的套接口。 exceptfds:(可选)指针,指向一组等待错误检查的套接口。 timeout:select()最多等待时间,对阻塞操作则为NULL。http://yingfeng7926yueyue.spaces.live.com/blog/cns!CEADD079FE6BD9D9!144.entry 如果是正常断开那可能通过select捕获到,但是如果是非正常断开,那就需要用心跳机制来判断了,所以最好还是加上心跳机制,客户端定时发送心跳信息,如果收不到则认为是断开了。 心跳包或者keepalive属性设置 每隔1分钟通讯一次,接收方如果连续两分钟没有接收到则已经断开,如果是发送方则更简单,发送失败即为断开。呵呵,即使是微软公司的DCOM通讯也是采用定时发送通讯包的,应该是没有其他的办法了 当服务器端正常断开连接后,客户端的OnReceive()会收到服务器发送的FD_CLOSE消息,据此判断一下就ok了 定时ping一次,查看是否可以连接也可以。ping的代码参见http://blog.csdn.net/biweilun/archive/2009/05/04/4149950.aspx 可以用select FD_READ,返回0表示正常关闭,返回-1,表示出错关闭或者发心跳包参考 粘贴位图指定透明颜色 刚收到骗子短信,不知道怎么处理 CreateWindow()内的提示参数为什么少个 .ncb文件为什么不能更新 将 编译选项 写到 源 文 件?比如:#pragma comment(compiler, "/EHsc"),可,失败! 画图高手请进啊!!!! 如何在VC++6.0下在jpg图上写上文字,然后把写上文字的jpg保存到硬盘上,请大侠帮忙?先行谢过。 组合框中的内容不能被改变 请教局域网的问题 怎样自己解htol函数,因为在wince下面没有提供big数转换未little数的函数。 关于鼠标取点的问题 for语句头中定义的变量的作用域
int nfds,
fd_set* readfds,
fd_set* writefds,
fd_set* exceptfds,
const struct timeval* timeout
);nfds:本参数忽略,仅起到兼容作用。
readfds:(可选)指针,指向一组等待可读性检查的套接口。
writefds:(可选)指针,指向一组等待可写性检查的套接口。
exceptfds:(可选)指针,指向一组等待错误检查的套接口。
timeout:select()最多等待时间,对阻塞操作则为NULL。
http://yingfeng7926yueyue.spaces.live.com/blog/cns!CEADD079FE6BD9D9!144.entry
或者
keepalive属性设置
呵呵,即使是微软公司的DCOM通讯也是采用定时发送通讯包的,应该是没有其他的办法了
或者发心跳包参考