linux 之 socket 套接字 SO_REUSEADDR 参数详解

      一般而言,在启动socket 连接前,需要绑定本机的ip 和端口(port),对于ip ,一般都是本机地址,而对于端口,在linux 操作系统中,是有很多个的(不允许重复使用),但是有时候,我们的网络服务需要支持热启动(即服务器A服务端口宕机,需要立即启动备用程序),但是对于普通的网络程序,如果在bind 之前不设置SO_REUSEADDR参数,该端口需要在2分钟后才能被使用,这样使得网络服务变得不是热启动,不能立即以毫秒级的速度启动网络服务,在bind 前设置SO_REUSEADDR即可在服务宕机后,可以立即使用该端口进行socket 的建立,下面

int nVal = 1;

if(setsockopt(nListenSock, SOL_SOCKET, SO_REUSEADDR, &nVal, sizeof(nVal)) < 0)

请看编程接口https://baike.baidu.com/item/setsockopt/10069288?fr=aladdin

设置完SO_REUSEADDR 后在进行bind 操作

猜你喜欢

转载自blog.csdn.net/weixin_38638777/article/details/105662435