免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6330 | 回复: 8
打印 上一主题 下一主题

『高手请进』进程在结束的时候如何处理Socket资源的释放???? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-10-13 21:02 |只看该作者 |倒序浏览
我利用Socket写了一个监控的程序,目的主要是监视
运行的服务器程序是否有内存泄漏,如果发现所监视
的服务器程序有内存泄漏的情况下会通过Socket向服
务器发送shutdown的指令,然后在监控的程序中会以
进程的方式重新启动服务器程序。由于我的监控程序
是与需要监视的服务器程序通过Socket以长连接的方
式处理的,当监控程序启动过服务器程序后,如果我
手动将监控程序关掉,在这个时候发现监控程序与服
务器程序建立的TCP连接不会断开。所以对于这一点,
我非常不理解.在没有办法的情况下,我在监控程序中
加了一个钩子,在手动关掉监控程序的时候显示调用
close来释放Socket资源。对于这个问题我有以下疑问:

1.进程在被中止的时候如何处理Socket资源的,是依赖
  与Socket的超时机制,还是会显示调用close来释放?
2.如果是显示调用close的方式,为什么会出现进程结束
  的时候Socket资源无法释放的问题?

论坛徽章:
0
2 [报告]
发表于 2005-10-14 08:55 |只看该作者

『高手请进』进程在结束的时候如何处理Socket资源的释放????

进程应该会关闭所有的socket,之前应该发一个FIN包。
如果是kill -9可能不会发送,这时对方就不会知道进程已经掉了

论坛徽章:
0
3 [报告]
发表于 2005-10-14 08:55 |只看该作者

『高手请进』进程在结束的时候如何处理Socket资源的释放????


目的主要是监视
运行的服务器程序是否有内存泄漏

能否透露一下怎么实现

论坛徽章:
0
4 [报告]
发表于 2005-10-14 10:39 |只看该作者

『高手请进』进程在结束的时候如何处理Socket资源的释放????

楼主高手才对呀.

论坛徽章:
0
5 [报告]
发表于 2005-10-14 14:07 |只看该作者

『高手请进』进程在结束的时候如何处理Socket资源的释放????

to:jeffwang8001

其实我也是你怎么想的,但是关键是在我关闭进程的时候有时候对方是知道TCP是断开了的,有时候却不知道TCP端开了.使用的都是同样的关闭进程的方式,为什么得到这么不稳定的结果?????

论坛徽章:
0
6 [报告]
发表于 2005-10-14 14:10 |只看该作者

『高手请进』进程在结束的时候如何处理Socket资源的释放????

我好像记得内核里面有一个参数来修改益处的级别

不太确定,忘了是在哪看到的,好像是一个等待队列

论坛徽章:
0
7 [报告]
发表于 2005-10-14 15:45 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
8 [报告]
发表于 2005-10-16 00:47 |只看该作者

『高手请进』进程在结束的时候如何处理Socket资源的释放????

原帖由 "快乐玩家" 发表:
socket实现时,可以考虑使用 so_reuseaddr 代替 inaddr_any,就可以避免出现这样的问题

供参考


跟你说的这个一点关系都没有呀???

论坛徽章:
0
9 [报告]
发表于 2005-10-16 00:48 |只看该作者

『高手请进』进程在结束的时候如何处理Socket资源的释放????

原帖由 "快乐玩家" 发表:
socket实现时,可以考虑使用 so_reuseaddr 代替 inaddr_any,就可以避免出现这样的问题

供参考


跟你说的这个一点关系都没有呀???
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP