设置端口复用,我们调用setsockopt()函数,并使用SO_REUSEADDR和SO_REUSEPORT选项。
一、SO_REUSEADDR主要有4方面的作用:
1、允许一个监听服务bind到现在正在被使用的端口上
例如: (1)创建一个套结字并bind到7080端口上,listen该套结字
(2)一个客户端connect该端口,accept该连接并转交给派生出来的子进程
(3)close监听套结字(注意此时子进程维护的客户端过来的连接依然存在)
(4)重新创建套结字并bind该7080端口,listen该套结字
最后一部在bind的时候会报错“Address already in use”,如果在bind之前用setsockopt设置SO_REUSEADDR选项,则不bind不会报错。