客户端执行了closesocket(),服务端怎么知道啊,谁给实例一下 或者客户端不发心跳包,直接掉线,服务端怎么知道 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 closesocket()的话可以知道,服务端会收到消息在onclose里处理。直接掉线不知道,这时很容易出错。因此建议发心跳包. 用TCP建立连接的客户端,在调用closesocket时,会向服务器端发送Fin包,所有服务器端会知道客户端要断开了,这时,服务器端TCP协议栈会通知上层的。如果中间突然断掉,比如说需经过路由器的,这是路由器没电了等等,客户端跟服务器端是根本不知道的。所以要防止这种情况,需要定时向一方发送相关的数据,另一方返回应答。如果在指定的时间内没返回应答,可视为断开。 心跳包我知道了,我想知道 lianglp() ( ) 说的“在调用closesocket时,会向服务器端发送Fin包,所有服务器端会知道客户端要断开了”这个怎么实现,给点参考的东西,谢谢 大家帮下忙,这个fin包怎么检测 比如 ServerSocket与客户端连接,看ServerSocket是否等于SOCKET_INVALID 若是则客户端关闭,否则没有关闭 用select() 如何检测,谢谢 好像是不是有个FD_CLOSE的消息,不太清楚select可不可以检测这个通知。 if( select() ){ int nResult = recv(); if( nResult < 0 ) { //断开了 } else if(nResult == 0) { if( GetLastError() == 0 ) { //断开了 } }} 不一定全对,不过你可以参考参考:判断客户端是否断开http://www.xiaozhou.net/cooldog/blogview.asp?logID=96 dll加密?高分求 50分 如何用MFC创建一个不要菜单栏menu的SDI单文档窗口 还有一个问题---我想加入用ADO加入一副图片的地址 msdn怎么安装? 请各位帮忙:我做了一个程序生成的文件无法双击打开,如何在系统中注册? 简单问题!!! VC++中ActiveX控件如何用没有说明呀!!!??? 我有一个DIALOG对话框,怎样激活当前窗口,并且使对话框总在最前面。谢谢回复给100分 ActiveX中怎么样显示。。。。。 郁闷啊!ado的简单问题 请问哪位有PE文件格式的资料? 效率问题 刚发现的问题
因此建议发心跳包.
知道客户端要断开了,这时,服务器端TCP协议栈会通知上层的。
如果中间突然断掉,比如说需经过路由器的,这是路由器没电了等等,客户端跟服务器端是
根本不知道的。所以要防止这种情况,需要定时向一方发送相关的数据,另一方返回应答。
如果在指定的时间内没返回应答,可视为断开。
这个怎么实现,给点参考的东西,谢谢
{
int nResult = recv();
if( nResult < 0 )
{
//断开了
}
else if(nResult == 0)
{
if( GetLastError() == 0 )
{
//断开了
}
}
}
http://www.xiaozhou.net/cooldog/blogview.asp?logID=96