在linux终止一个程序之后不回立即释放端口,因端口上有处于TIME_WAIT的连接。需要等到一定的时间才能自动释放,如果有重启服务的要求,服务是无法启动的。解决办法就是端口复用,配置socket端口为SO_REUSEADDR模式。用以下代码:
int opt = 1;
setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, (const void *)&opt, sizeof(opt));
在创建socket 之后执行这段代码即可。
在linux终止一个程序之后不回立即释放端口,因端口上有处于TIME_WAIT的连接。需要等到一定的时间才能自动释放,如果有重启服务的要求,服务是无法启动的。解决办法就是端口复用,配置socket端口为SO_REUSEADDR模式。用以下代码:
int opt = 1;
setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, (const void *)&opt, sizeof(opt));
在创建socket 之后执行这段代码即可。