tcp套接字端口复用的总结

http://bbs.chinaunix.net/thread-2034800-1-1.html

下面建立的套接字都是tcp套接字

1.进程创建监听套接字socket1,邦定一个指定端口,并接受了若干连接。那么进程创建另外一个套接口socket2,并试图邦定同一个端口时候,bind错误返回(即使使用了SO_REUSEADDR).

2.进程创建监听套接字,邦定一个指定端口,并接受了若干连接,为每个连接创建子进程为连接服务。杀死监听套接字所在进程,然后重新启动。重新启动的进程调用bind重新建立监听套接字。这次邦定只有在下面条件满足时才能成功:在bind前指定了SO_REUSEADDR。

3.进程创建套接字socket1,邦定一个指定端口,使用这个套接字去连接另外一个监听套接字。连接建立。然后进程建立一个监听套接字socket2,邦定同一个端口。这次邦定只有在下面两个条件都满足的情况下才成功返回:为socket2邦定前指定SO_REUSEADDR,且为
socket1邦定前也指定了SO_REUSEADDR。

4.进程创建套接字socket1,邦定一个指定端口,去连接某个监听套接口。杀死进程,保证socket1一端执行主动关闭。那么重启进程后,除非上一个连接中socket1退出了TIME_WAIT状态,否则重启的进程在调用bind时候错误返回。

你可能感兴趣的:(网络,Linux)