Chinaunix首页 | 论坛 | 博客
  • 博客访问: 404113
  • 博文数量: 168
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 0
  • 用 户 组: 普通用户
  • 注册时间: 2013-09-09 13:46
文章分类

全部博文(168)

文章存档

2015年(51)

2014年(30)

2013年(87)

我的朋友

分类: LINUX

2013-09-17 10:00:23

原文地址:TCP选项之SO_REUSEADDR 作者:weizhulinux

SO_REUSEADDR

据《UNIX网络编程》卷一所说,此选项用于4种用途

我本人在TCP服务器上只处理过两种,其他情况如有需要,请参考《UNIX网络编程》卷一

1.引自《UNIX网络编程》卷一

多进程绑定同一对IP和PORT,按时序举个多进程模式tcp服务器的例子

 a.父进程进行监听;

 b.syn包,请求连接;

 c.派生子进程处理用户长连接请求;

 d.父进程挂掉;

 e.重启父进程。

此时,子进程复制继承父进程的监听socket,并且子进程并没有消亡,如果在监听前没有对监听socket设置此选项,重启父进程时,会导致bind调用失败。


2.先明确一个概念:socket是系统级的对象,并非属于某个进程自己的资源。
言归正传,不考虑多进程方式的tcp服务器,举个最简单的单进程+epoll方式的TCP服务器的例子
服务器进程挂掉(内核自动关闭所有此进程打开的文件,其中包括socket),监听socket进入TIME_WAIT状态(此时socket仍存在于系统中),重新启动服务器,如果在监听前没有对监听socket设置此选项,此时会导致bind调用失败。

阅读(642) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~