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

用socket编程中,怎样及时的知道非正常断开的TCP连接!!

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

    本文导语:  用socket编程中,怎样及时的知道非正常断开的TCP连接!! 我知道用心跳包测试可以实现,一种是通过系统检测,一种是手动检测。 我参考了一些资料,在socket中通过setsockopt函数设置套接口,可以实现。其中有这样的...

用socket编程中,怎样及时的知道非正常断开的TCP连接!!
我知道用心跳包测试可以实现,一种是通过系统检测,一种是手动检测。
我参考了一些资料,在socket中通过setsockopt函数设置套接口,可以实现。其中有这样的一个材料:

Linux平台下
        #include 
……
        ////KeepAlive实现
//下面代码要求有ACE,如果没有包含ACE,则请把用到的ACE函数改成linux相应的接口
        int keepAlive = 1;//设定KeepAlive
        int keepIdle = 5;//开始首次KeepAlive探测前的TCP空闭时间
        int keepInterval = 5;//两次KeepAlive探测间的时间间隔
        int keepCount = 3;//判定断开前的KeepAlive探测次数
        
        if(setsockopt(s,SOL_SOCKET,SO_KEEPALIVE,(void*)&keepAlive,sizeof(keepAlive)) == -1)
        {
                ACE_DEBUG ((LM_INFO,
                        ACE_TEXT ("(%P|%t)        setsockopt SO_KEEPALIVE error!n")));
        
        }
        
        if(setsockopt(s,SOL_TCP,TCP_KEEPIDLE,(void *)&keepIdle,sizeof(keepIdle)) == -1)
        {
                ACE_DEBUG ((LM_INFO,
                        ACE_TEXT ("(%P|%t)        setsockopt TCP_KEEPIDLE error!n")));
        }

        if(setsockopt(s,SOL_TCP,TCP_KEEPINTVL,(void *)&keepInterval,sizeof(keepInterval)) == -1)
        {
                ACE_DEBUG ((LM_INFO,
                        ACE_TEXT ("(%P|%t)        setsockopt TCP_KEEPINTVL error!n")));
        }
        
        if(setsockopt(s,SOL_TCP,TCP_KEEPCNT,(void *)&keepCount,sizeof(keepCount)) == -1)
        {
                ACE_DEBUG ((LM_INFO,
                        ACE_TEXT ("(%P|%t)  setsockopt TCP_KEEPCNT error!n")));
        }

测试中表明,当Linux服务器设定了KeepAlive

以上资料,本人不理解,写入程序中,编译时TCP_KEEPIDLE,TCP_KEEPINTVL,TCP_KEEPCNT几个变量无法识别。
请高手们帮帮忙,到底怎样才能及时的知道非正常断开的TCP连接!!谢谢啦!!

|
http://community.csdn.net/Expert/topic/4566/4566440.xml?temp=.7585108

这个帖子大家谈得较多了 
我觉得你应该看看

|
netinet/tcp.h里没有定义吗?

|
netinet/tcp.h中没有.
我怀疑我查的资料到底对不对了!
有没有更好的方法吗?

    
 
 

您可能感兴趣的文章:

  • 两个 Socket 互相通信,其中一个如何判断另一个 Socket 是否已经意外断开了连接?
  • (100)"断开的管道" 在Socket编程当中,如果我连续发送包,例如1000次,总会出现"断开的管道"的错误提示,请问如何解决
  • socket 断开连接如何再恢复连接
  • socket 断开
  • 客户端 socket 断开后 服务器端系统如何处理?
  • socket连接总断开?
  • 请问如何在服务器端获得 socket 断开的消息?
  • Linux下的Socket通信如何断开连接的端口从而实现重复使用该端口
  • 急问:怎么判断一个非阻塞的socket已经断开了?
  • SOCKET调用close断开连接的时候回主动发FIN ACK包吗?
  • 我断开socket服务器日志之后,服务器程序就挂死啦
  • socket问题,当客户端关闭或者实际链路断开后服务器端怎么判断?
  • 怎么知道socket连接已经断开?
  • 怎样判断socket断开并自动重连?
  • socket客户端connect服务端后,如何断开连接?
  • 如何知道socket已经断开?
  • 如何判断socket断开连接
  • 问一个socket问题,服务器不停send,客户端进入睡眠服务器会断开
  • 在linux下面,为什么TCP服务器端在客户端没有断开前推出程序会关不掉socket?
  • 请教各位:Unix环境下socket接口服务端程序为什么会经常自己断开?100分赠英雄!
  • 什么是socket的长连接,以及如何实现长连接,长连接和短连接有什么区别?
  • kjava能不能通过socket连接服务器
  • socket 连接问题(不要见笑)
  • 如何跨网段进行socket连接
  • socket连接建立,收不到告警的情况?netstat结果如下
  • 服务器与客户端建立socket连接,如何获得端口号.谢谢
  • ftp连接出现socket错误=#10054的解决方法
  • 如何清楚linux系统中以退出程序的socket连接?
  • Socket连接的时间不能控制??请帮小妹
  • http连接,服务器端关闭socket
  • 请问javaBean能不能进行非本机的socket连接
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • andriod下java socket网络编程:java socket客户端服务端代码示例
  • 大家帮忙推荐一本linux socket编程的入门书,我刚接触socket,谢谢!!
  • IOS开发之socket网络编程(基于SimpleNetworkStreams的c/s程序)
  • re socket编程中 ACCEPT返回的socket与原socket(他参数中的)端口号一样吗?
  • Linux c socket编程:简单的客户端(client)和服务端(server)实现
  • socket 编程时,write的写入的数据大于socket缓冲区,会有什么结果??
  • Linux下使用openssl api编程socket编程,为什么要编译啊?
  • 关于文件操作和Socket网络编程!
  • linux下socket编程问题!
  • socket编程 中的bind问题
  • socket编程--htons
  • 急!!请教关于linux socket编程的一个问题!!
  • 急!关于SOCKET编程,在线等待!
  • socket编程 通过man socket, 没有找到socket函数的第一参数该填什么 怎样利用man手册
  • 多进程socket编程问题
  • 问一个socket编程问题,急~~~
  • 求教!为何在socket编程中调recv函数无法阻塞?
  • 请教一个socket编程问题
  • 求助!!linux下socket编程
  • socket编程,使用recvfrom()函数监听问题。
  • sco unix下socket编程的问题,请大家帮忙
  • java命名空间java.net类socket的类成员方法: socket定义及介绍
  • libevent2需要从socket读一段数据写入一个socket中,同时发送给另一个socket
  • java命名空间java.nio.channels类socketchannel的类成员方法: socket定义及介绍
  • socket 通讯开发包 Simple Sockets
  • java命名空间java.nio.channels类serversocketchannel的类成员方法: socket定义及介绍
  • C++ Socket 库 C++ Sockets
  • java命名空间java.nio.channels类datagramchannel的类成员方法: socket定义及介绍
  • vc做的的socket应用和unix下socket?
  • java命名空间java.net类socket的类成员方法: getsendbuffersize定义及介绍
  • QSocketDevice ( int socket, Type type )中那个 int socket 是哪里来得?


  • 站内导航:


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

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

    浙ICP备11055608号-3