社区
网络编程
帖子详情
建立TCP连接,可有一方down机了另一方怎样知道呢??迫切
hjt79
2003-10-17 02:41:01
我有个问题很急,请帮助我!!!
服务器和客户机建立了TCP连接(用CSocket做)之后,但客户机忽然down机了,那么服务器端怎样知道该客户机down机了呢?因为我必须知道那个客户机不能跟服务器连接上就要在服务器关闭原来跟那个客户机建立的连接,请问,有办法吗
...全文
95
16
打赏
收藏
建立TCP连接,可有一方down机了另一方怎样知道呢??迫切
我有个问题很急,请帮助我!!! 服务器和客户机建立了TCP连接(用CSocket做)之后,但客户机忽然down机了,那么服务器端怎样知道该客户机down机了呢?因为我必须知道那个客户机不能跟服务器连接上就要在服务器关闭原来跟那个客户机建立的连接,请问,有办法吗
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hjt79
2003-10-25
打赏
举报
回复
我根据大家的意见去看了keepAlive的用法,发现:在windowScoket1中用的setsockopt(。。。,KEEP_ALIVE)需要在注册表中设置其发送探测包的时间间隔,但这样会影响本机所有的TCP连接,这样影响不好,而在windowSocket2中我发现了函数WSAioctl中可用SIO_KEEPLIVE_VAL参数针对每一socket进行单独设置其探测包发送的时间间隔,这是非常好的,不会影响其他socket。
但最后我还是用自己写一个检测方法,正如studyingpersons(深入学习)朋友所说,我在服务器设标志,让客户端定时发信息去修改对应的标志,而服务器则定时去查询这些标志,如果发现有标志没修改,则认为对应的客户端掉了,做关闭其连接操作
不知道是否有其他人对我的做法有另外的观点
flinming
2003-10-24
打赏
举报
回复
看看onclose事件。。。。。。有个断开值。。。
chenshijin
2003-10-24
打赏
举报
回复
你可以调用setsockopt(。。。,KEEP_ALIVE),具体可以参见MSDN上面的文章:How to Determine Loss of Client/Server Connection
beyondtkl
2003-10-23
打赏
举报
回复
TCP连接是时刻保持连接状态的
只要有连接 服务器当然知道它是连接的
而客户端死机了 自然服务器就会知道
TCP有一种技术 叫着 keep alive 叫保活
你可以去看看
hjt79
2003-10-23
打赏
举报
回复
以上的各种方法都好,真谢谢大家,希望继续有人能发表意见
mfkzj
2003-10-22
打赏
举报
回复
sevencat你太牛B了 哈哈
楼上说的发验证信息的方式还是比较实际的 很多的程序是这样出来的
如果你需要在TCP中得到这个消息 那只有看一下tcp/ip详解
pigcatpig
2003-10-22
打赏
举报
回复
老调重谈了,建议去网络那边看看,有的是这种问题,这种问题mfc没法处理,比较底层的...
SyDes21
2003-10-22
打赏
举报
回复
在WinSock中,Server通过判断是否从Client接到一个FD_CLOSE,若接到了FD_CLOSE则说明Client down了. 我这个你参考一下,至于MFC CSocket我就不知道了. 我想应该有类似的实现方法吧.
powgu
2003-10-22
打赏
举报
回复
客户端做个关机触发事件。。
一关就响应发关机信息。。
nj_draker
2003-10-22
打赏
举报
回复
开个线层不断去收数据,看recev的返回值,如果断线就立刻可以看出来了
ydzqw
2003-10-22
打赏
举报
回复
写个HeartBeat吧
iq199
2003-10-21
打赏
举报
回复
以下抄自tcp/ip详解:
保活并不是T C P规范中的一部分。Host Requirements RFC提供了3个不使用保活定
时器的理由: (1) 在出现短暂差错的情况下,这可能会使一个非常好的连接释放掉;
(2)它们耗费不必要的带宽;(3)在按分组计费的情况下会在互联网上花掉更多的钱。
建议楼主去看tcp/ip详解第23章
Weiguo
2003-10-21
打赏
举报
回复
我正要做个关于FTP的东西,还没眉目,请指点以下,我们可以共同研究
hjt79
2003-10-21
打赏
举报
回复
用发包的办法是可以,但是比较复杂,可以不可以简单一点,就是说当死机,非法退出程序,或网路不通了,有没有简单的检测函数呢??
sevencat
2003-10-17
打赏
举报
回复
keepalive
自己写心跳
如果是死机,这时候服务器能监测到的。
最简单的办法:
在软件使用说明上写上:
如机器死机请立刻打电话至:0512-XXXXXXXX
studyingpersons
2003-10-17
打赏
举报
回复
有办法,就是你得使用一套通信标准。
该标准中必须有一个条款规定每隔多长时间客户机向服务器发送一个包,包格式自己定义,只要能说明这个客户端此时在线就行。当服务器经过一个比较长的时间后,一直没有得到某个客户端的这样的数据包,那么就认为此客户端已经掉线,可以关闭与它的连接了!!!
网络编程
TCP
电子网络词库
客户端
tcp
_cli.c。头文件 head.h。服务器 main.c。功能函数 fun.c。 实现以下电子词典功能 登录注册功能,不能重复登录,重复注册。用户信息也存储在数据库中。 单词查询功能 历史记录功能,存储单词,意思,以及查询时间,存储在数据库 基于
TCP
,支持多客户端
连接
采用数据库保存用户信息与历史记录 将dict.txt的数据导入到数据库中保存。 返回上级、按下ctrl+c退出客户端后,该客户端退出登录
电子词典(基于
TCP
协议多进程通信和数据库)
【代码】电子词典(基于
TCP
协议多进程通信和数据库)
Android底层驱动开发(十一)
[力瑜] WiFi开发流程、HTTP报文格式、
TCP
报文格式、UDP(User Datagram Protocol)报文、IP报文格式、总线与通信协议基本概念、GPIO、I2C、PCIe、UART、SPI、MIPI、USB、Linux内核无线子系统、WLAN/BT协议栈、WLAN与WiFi、WiFi数据包、设备安全接入过程、漫游、Wireless tools for Linux、UWB、Sub-GHz
全栈性能测试企业级实战
全栈工程师能够完成产品设计,技术选型,架构落地;可以开发前端和后台程序,并部署到生产环境。一人多用,省成本,完全没有多人配合时的工作推诿和沟通不畅等情况发生,这是创业公司找工程师时,全栈工程师是首选的原因。大互联网公司的系统平台更复杂,需要更多的角色通力协作完成任务。那是不是全栈工程师在大企业就没有存在的必要了呢?当然有必要。大企业需要从全局考虑来做顶层设计,对于做顶层设计的人来说知识面宽尤为重要。
网络编程项目 (网络词典)
TCP
搭建 实现多对1 服务器端使用IO多路复用 数据库
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章