当前位置:  技术问答>linux和unix

(在线等待!!!)我想问一下作为客户端时,如果服务端的主机已关闭,这时应怎样处理。

    来源: 互联网  发布时间:2015-01-21

    本文导语:  如果服务端的主机已关闭,这时应怎样处理。这里用阻塞的SOCK时会一直等待(应该是9分钟)用非阻塞的SOCK时,会连不上(服务端的主机开着时,我 set linger={1,0} )。 | 服务器主机关闭你的...

如果服务端的主机已关闭,这时应怎样处理。这里用阻塞的SOCK时会一直等待(应该是9分钟)用非阻塞的SOCK时,会连不上(服务端的主机开着时,我 set linger={1,0} )。

|
服务器主机关闭你的客户端是没有办法感知到的,除非在关闭后你向服务器进行了write操作此时write会返回ECONNREST的错误。
一般的情况是设置read的超时处理,办法主要有两种1。利用alarm();2.利用select().
另外你也可以利用加急数据(OOB)的特点设计定时的检测程序,来定时查看网络的连接情况。

|
你加上超时设置
CSocket::WaitForIncoming(int seconds)
{
    fd_set fdset;
    struct timeval timeout;

    FD_ZERO(&fdset);
    FD_SET(m_SocketFD, &fdset);

    timeout.tv_sec  = seconds;
    timeout.tv_usec = 0;

    int ret = select(m_SocketFD + 1, &fdset, NULL, NULL, &timeout);
    return ret;
}

在seconds秒后如果没有收到东东,socket退出,你可以继续你的处理了

|
服务器正常关机,客户端可以知道.当服务器正常关机时系统会发送关闭字节,引发四路关闭操作,客户端READ时可以知道,WRITE时会出错.(我指的是TCP)
而服务器掉电就只能使用定时检测属性了.

|
楼上说的没错!
另:你可以激活socket的alive选项,系统会自动检测连接是否正常!

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 如何判断在线用户,主要是如何判断用户关闭所有窗口(即他已经不在线了)?
  • 我用的是putty软件SSH到linux上,但启动程序后关闭终端程序就退出了,在线等,请高人指教!
  • 远程连接关闭后,程序也停了,该怎么做才能不停?在线等"菩萨"
  • 怎么样才能再关闭JFrame时,执行我自定义的一些方法?(在线等待)
  • 基于Html5的mockups在线工具简介
  • 装MYSQL后启动错误! mysqld ended --在线急等!在线急等!在线急等!在线急等!-----
  • MyEclipse SVN插件SubEclipse 在线离线等几种安装方式介绍
  • 智能在线表单设计器 FreeForm智能在线表单设计器
  • Linux使用群24032501,保持20人在线,目标50人在线
  • 简单的输入输出问题 在线等待 在线给分
  • 怎么用能让asp实现统计在线人数的功能。在线等待!!!帮忙送分!
  • 在线求教, 为什么不能开始除root之外的用户登录??...很急, 在线等
  • 在线等,在线给分!(简单问题,急)
  • 我需要唯一用户在线,不能两个用户同时在线的JSP实现的设计文档
  • 在线等,在线给分!!!!!!!!!!
  • 在线求助!关于如何使用“信号”的方式来响应键盘按下的消息!在线急盼回复!
  • 在线等几个简单问题解答,答出一个在线加50分。
  • 在线解压压缩 PclZip
  • 在线支持系统 CSLH
  • 在线视频编辑工具 Kaltura
  • 非常急,请问如何用JSP实现在线人数统计
  • 手机在线收音机 MFRadio
  • 在线客服系统 PHP Live!
  • 在线考试系统 TCExam
  • Fancy_fan(阿水)能不能将如何判断在线人数说得更明白些!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3