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

高手支招:TCP掉线重新连接,资源的释放问题?

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

    本文导语:  客户端TCP掉线后,在服务器未检测出掉线并关闭之前又连接上服务器了,我想问: 这时服务器对该客户端先前的连接是否已释放,还是就不需要释放?是否占用了资源? 请高手! | tcp的连...

客户端TCP掉线后,在服务器未检测出掉线并关闭之前又连接上服务器了,我想问:

这时服务器对该客户端先前的连接是否已释放,还是就不需要释放?是否占用了资源?

请高手!

|
tcp的连接的中断是可以检测到的,比如read()==0。
如果你说的资源是你自己给每个tcp连接分配的,那当然应该释放。
如果你说的资源是指tcp的系统资源的话,那你不用操心,因为tcp的连接是流连接,内部有机制判断连接是否正常,如果你的客户端断开重联,新连接和原来的连接已经没什么关系了,原来连接的资源会被超时释放,当然你server端还是应该close掉,因为你已经不能用它了,虽然它并不占你什么资源。

|
>>>>>>>>>2.但客户端TCP掉线后,若在一段时间内继续登录,那么我的服务器就不能检测出该客户端以前的掉线
-----------------

既然有重新登录的动作,有发登录包的请求,如果你之前保存有在线列表,对比一下不就知道这是断线重连了吗?

>>>>>>>>>我想是不是因为前后两个连接的客户机的IP、端口都一样,导致无法检测?

所谓的SOCKET,只不过是用一个ip+端口来决定的,如果照你说的重连后的ip端口不变,你就能重复使用这个SOCKET,无须管它是否重连过

我是写服务器的,也写过不少客户端,我没遇见过不能及时判断的情况。


>>>>>>我的业务量比较大,并且程序需要长期运行,我没有采用发心跳包的方法来检测,不希望TCP出现资源泄漏。

ip网络是个"尽力而为"和"无连接"的网络,尽管TCP(可以认为是程序员写的一个虚拟了"有连接网络"的管理器)帮我们做了一些处理,但是也不能认为是任何情况下都完全可靠,必要的KeepAlive动作,还是得发送处理,不管你的"服务器的业务量大,运行时间长"
-----------------

|
IP地址和端口一样并不等于资源就会重用吧.

这个IP地址和端口只是监听器的,真正双方进行通信时,会另外建立端口(不然,你想有多个客户的话,他们怎么可能同时连接上你的服务?)

所以,一般上来说只要断线就应该释放资源的.

但有可能系统采用了连接池的概念,即它会自动保存一断时间这个资源在连接池(不管是你主动关闭的,还是被动掉线的),只要客户在指定时间内重连,就会重新使用这个资源.

呵呵,不过这个概念是对于ADO对象,不知道是不是也适用于TCP啊 :D

|
在客户端掉线的情况下,服务器端资源当然没有释放,因为释放不释放在于代码的调用,也就是关闭套接字的动作.其实服务器软件都有超时处理功能,如果在规定时间内没有收到客户端回溃数据,就认为是掉线,关闭套接字!

|

http://community.csdn.net/Expert/topic/3945/3945333.xml?temp=.8731501

类似有个帖子 你看看
如果能检测到掉线 再加上超时设定 能够显示释放资源

如果没检测掉线 不关闭 连接 资源不释放
但你关闭连接后 也要系统去调度 可能会出现 你关闭后过一会儿才释放的现象

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












  • 相关文章推荐
  • 关于子进程中释放内存的问题!!?高手请进
  • 请教高手如何释放内存
  • 请教高手:FreeBSD下什么命令能释放系统的端口
  • 有关JavaBean中的资源释放问题,(熟悉jsp+JavaBean原理的高手请进)
  • 高手,高手,高高手请进!
  • 有熟悉EXIM的高手高手么??
  • to 高手:学java应该怎样一步步学习,从菜鸟到高手.
  • 高分请高手,高手定能解决
  • 请问高手在linux中用什么命令可以做linux的启动盘???在等待高手??
  • 有高手研究Agent++麽?里面有个thread.h,蛮难读的,请高手指点
  • 难道高手区里的人就是高手?
  • 在dos下用bc31挑战高手******开发mssql程序,连接时报link err:undefined symbol GETNOTE in module DBEXTERN?(挑战高手)
  • 真正的linux高手,请看过来,看你符合高手标准不?
  • 难道这没有高手吗?难道这没有乐于助人的高手?(高分酬谢62+50+50)
  • 关于我对linux高手用yum,非高手用源码的理由
  • 高手救命,很急——ORACLE817安装在UNIXWARE711上,手工启动数据库后在netasst中连接错误,高手帮我看看?
  • 请教高手lvs的奇怪问题,我挺着急,希望高手别潜水,就就我,先谢谢了
  • 各个高手看看这个问题!本人第一次学习java所以要各位高手的帮助。。
  • :请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • 请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • 我是新手,高手,高手,快来救我
  • EJB问题,请教高手(非高手莫进)
  • 请各位JAVA高手,网业高手看过来,我把能给的分都送出!!!只能给37分,哎!!
  • 编程技术其它 iis7站长之家


  • 站内导航:


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

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

    浙ICP备11055608号-3