WinSocket编程(TCP/IP):
一个服务器端和多个客户连接,客户端和服务器连接成功后,服务器端就一直向连接成功的客户端发送数据包;请问的是:
1.如果某个客户端正常退出,服务器端怎么知道该客户端退出了?
2.如果非正常退出(例如客户端拔了网线),服务器端如何知道该客户已经断开连接的?
有人说用定时发送数据包检查,请问具体如何实现了?
一个服务器端和多个客户连接,客户端和服务器连接成功后,服务器端就一直向连接成功的客户端发送数据包;请问的是:
1.如果某个客户端正常退出,服务器端怎么知道该客户端退出了?
2.如果非正常退出(例如客户端拔了网线),服务器端如何知道该客户已经断开连接的?
有人说用定时发送数据包检查,请问具体如何实现了?
解决方案 »
- 串口通信程序,在线求教
- 怎样让子窗口挨着父窗口的右边弹出。。
- 能否介绍基本编写网络游戏的经典书籍?
- 只有30分了``请教啊``我现在不知道应该再学什么好了``
- 这样用个按钮控制帮助文件的显示?
- Dialog 程序
- 有没有人告诉我当你的200分用完了会怎样?
- 怎么样把LPTSTR 转为CSTRING
- 请问如何知道当前文档下文件的路径(在程序的C???View下)
- chenzhiyang(象牙芒),tiara(小菜)请进,关于CHtmlView,IWebBrowser的问题
- 可以用类的成员函数作为启动线程么?
- 【VC 安装出错,紧急求救!】安装 vc6.0 时,提示“该内存不能为 "read" ” 这样的错误
http://community.csdn.net/Expert/topic/3318/3318873.xml?temp=.3287317
2,定时发送的数据包叫做心跳包,服务端发送,客户端返回,发送的内容就是普通的字符串,客户端服务端都可以理解的字符串,一段时间客户端不返回了,服务端将客户端视为断线,时间多长由你自己决定
异常退出,需要发送heartbeat包来维持,保活定时器
由次判断
2。非正常,heartbeat
就是服务器定时发个包到CLIENT 看是否ACK
无ACK,CLIENT DOWN
由次判断
==============================
正常退出,服务器端可以收到什么消息啊?
如果客户端没有发送消息,服务器端recv本来就不能收到什么数据啊?
客户端正常退出,服务器端会自动触发什么事件吧?????????????????/
在tcp/ip中当断开连接时,即close ,会发一个fin包
而在socket设计师,当正常退出,也即closesocket时
server recv()==0
怎么用recv来判断??????????????????
函数send()
WSAGetLastError()客户端:
Read()
WSAGetLastError()
如果判断到掉线,就重新连接。另外,如果客户端端主动退出,应该send一个信息给服务器知道。但是如果你客户端是连接上后只有read()的动作而没有send() 的动作,你们服务器将无法得志是客户端是否是自愿退出。
函数send()
WSAGetLastError()
==========================================
??????????????????????????//
客户端自动退出,服务器端要send????才知道客户端退出?
你说的马上返回是在哪里返回???????????????????????????????
怎么用recv来判断??????????????????
你是用csocket的吧
我是用socket api来说明,不过原理的东西是一样的,