linux socket 程序被ctrl+c或者异常终止,提示:bind error:Address already in use,解决办法

linux socket 程序被ctrl+c或者异常终止,再次起程序时提示该端口号已被绑定,是以为之前的socket端口没有被正常释放。

所以需要 在bind之前,对setsocketopt做一些设置。

在bind之前,添加以下处理即可:

int mw_optval = 1;

setsockopt(server_sockfd, SOL_SOCKET, SO_REUSEADDR, (char *)&mw_optval,sizeof(mw_optval));

或者过段时间,重启都可以解决,但是以上的处理肯定是更加科学。

参考:https://blog.csdn.net/matthew0618band/article/details/42123123