我程序的socket采用同步数据传输,因为我觉得这样对于传输文件什么的可能比较方便处理的,特别是处理相应信号时。但是这样有一个问题啊,怎样得知客户端已经和服务端断开连接了呢?还请各位帮忙
解决方案 »
- 钻井井身结构图形控件的设计与实现
- 新手请教:CSocket做聊天室,用链表是没有多线程么??
- ado+vc -1.#IND0问题
- 在一个类中定义一个CString成员变量,没有初始化,然后在后续代码中用一个CString的值给其赋值,有时会出错,为什么?
- 求助!! 关于基于JPEG2000静态图像压缩的实现
- Receive(buff1,20)中的第2个参数设大了为什么会出错
- UDP方式recvfrom接收函数为什么有时是阻塞,而有时是非阻塞的?
- 什么时候用VC(或C++)合适啊?
- 拖动图象
- CSocket通讯问题?
- 模式识别,图像处理的群,这方面的爱好者请进,群号:6941138
- 如何向RichEdit中指定位置插入图片
如果使用API关注FD_CLOSE
这样对后来的数据处理岂不是很麻烦?
我看到还有一种好象是判断recv 的返回值是不是 0 0 代表已经断开。
这类问题可以处理.2.非正常断开.
a. 客户端主机突然停电、被损坏、网线被剪断,这是一类;
b. 客户端进程被结束任务程序强行中止, 此时物理连接是完好的.对于非正常断开, TCP/IP 协议不能检测, 这是 TCP/IP 的设计问题, 只能通过发送数据包来检测.
如 HeartBeat 包. 只要包不能正常发送出去, 不管是基于上述何种原因, 都可以认为网络已经断开.在你的程序中加入两对 Socket ,其中一对用来发送 HeartBeat 包,每隔单位时间发送一次.
出错则认为网络已经断开.对于非正常断开, 两对 SOCKET 必然同时断开,这样就可以处理非正常断开了
服务器收到数据后ECHO,client设置收发延时在指定的
时间没收到数据包断开连接