AddIPAddress添加临时IP后,socket bind失败

问题描述

在Win10\Win11下使用addIPAddress添加临时IP成功后,立即创建socket,bind失败

cpp 复制代码
if(!m_socket->bind(QHostAddress(m_localIP), listenPort))
{
    qCritical() << QString("bind error %1").arg(m_socket->errorString());
    return;
}

错误输出:

bind error 这个地址不可用

解决方案

经测试addIPAddress添加临时IP后,未立即生效,至少要超过3秒的等待时间,故采用如下方案:

cpp 复制代码
int count = 0;
bool bindOK = false;
do
{
	bindOK = m_socket->bind(QHostAddress(m_localIP), listenPort);
	if(bindOK){
		break;
	}

	QThread::msleep(500);
} while (count++ < 12);

if (!bindOK)
{
	qCritical() << QString("bind error %1").arg(m_socket->errorString());
	return;
}

查询相关资料

https://learn.microsoft.com/zh-cn/windows/win32/api/iphlpapi/nf-iphlpapi-addipaddress

https://bbs.csdn.net/topics/390226048

https://stackoverflow.com/questions/23620805/addipaddress-not-taking-immediate-effect

相关推荐
小丁爱养花34 分钟前
网络原理(一):应用层自定义协议的信息组织格式 & 初始 HTTP
java·服务器·网络·网络协议·http
猪蹄手1 小时前
网络层协议IP
服务器·网络·tcp/ip
下面我就简单说两句1 小时前
物联网无线局域网WiFi开发(二):WiFi_RTOS_SDK
windows·物联网
Peter_chq1 小时前
【计算机网络】数据链路层
linux·c语言·开发语言·网络·c++·后端·网络协议
麻瓜也要学魔法2 小时前
网络地址转换
服务器·网络
爱跨境的笑笑2 小时前
反向代理服务器的用途
网络·网络协议·智能路由器
群联云防护小杜2 小时前
如何解决DDoS导致服务器宕机?
网络·网络协议·安全·web安全·udp
w97910282 小时前
网络编程并发服务器的应用
运维·服务器·网络
雪碧聊技术2 小时前
RabbitMQ5:Fanout交换机、Direct交换机、Topic交换机
网络·rabbitmq·fanout交换机·direct交换机·topic交换机