刚关闭连接,马上又bind端口,可能报错:Address already in use。
这可能是端口处于TIME_WAIT状态,等待两分钟后才能再次被使用。
如果要马上可用,可以使用以下方法实现:
//包含头文件
#include <sys/types.h>
#include <sys/socket.h>
int opt=1;
unsigned len=sizeof(opt);
setsockopt(listnnfd,SOL_SOCKET,SO_REUSEADDR,&opt,len);
//成功时,返回0。出现错误时,返回-1,并设置errno。
//SO_REUSEADDR顾名思义是让端口释放后立即就可以被再次使用。