windows c++ bind函数绑定端口失败报错误码10013,命令行查,netstat -ano查也没有端口冲突,重启电脑后出现的该问题,再重启也无法解决,netassist工具测试端口发现57000附近的端口都不能使用
端口被其他进程占用了,netstat -ano |findstr “端口号”
查看一下是哪个进程
出现这样的错误可能有两个原因,第一是因为当前主机已经有服务器进程在调用bind和listen在监听我们的目标端口,如果我们在这时再次调用bind函数进行绑定的话,则会产生系统调用错误。
第二个原因可能是因为我们所需要bind的目标端口是本机socket已经连接的端口。
解决方法:设置套接字SO_REUSEADDR,所有的TCP服务器都应当指定该选项。
指定方法:
int flag = 1;
if (setsockopt(listen_handle_, SOL_SOCKET, SO_REUSEADDR, (const char*)&flag, sizeof(flag)) < 0)
{
printf("socket setsockopt error=%d(%s)!!!\n", errno, strerror(errno));
exit(1);
}