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

相关推荐
兴达易控8 分钟前
ProfibusDP主站转modbusTCP网关接DP从站网关通讯案例
网络
IP管家2 小时前
物联网设备远程管理:基于代理IP的安全固件更新通道方案
服务器·网络·物联网·网络协议·tcp/ip·安全·ip
搬码临时工2 小时前
远程连接电脑的方法?异地远程桌面连接和三方软件实现
运维·服务器·网络·物联网·电脑·远程工作
Mast Sail3 小时前
windows下authas调试tomcat
java·windows·tomcat·authas
WuYiCheng6663 小时前
IPsec VPN与SSL VPN实验思路(eNSP)
网络·智能路由器
kaixiang3003 小时前
sqli-labs靶场29-31关(http参数污染)
网络·网络协议·http
吃橘子的猴3 小时前
BGP实验
网络·智能路由器
m0_549314863 小时前
二、IGMP
网络·网络协议·组播·icmp·igmp·multicast
purrrew3 小时前
【Java ee初阶】http(1)
网络·网络协议·http
小李不想说话3 小时前
HTTPS 加密原理
java·网络·网络协议·学习·安全·http·https