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

相关推荐
叫醒你笛莎6 分钟前
IGMP(Internet Group Management Protocol)与组播技术深度解析
网络
lulinhao13 分钟前
HCIA/HCIP基础知识笔记汇总
网络·笔记
暴走的YH27 分钟前
【网络协议】三次握手与四次挥手
网络·网络协议
yuzhangfeng29 分钟前
【云计算物理网络】数据中心网络架构设计
网络·云计算
weixin_420947641 小时前
windows golang,consul,grpc学习
windows·golang·consul
zhu12893035561 小时前
网络安全的重要性与防护措施
网络·安全·web安全
网络研究院1 小时前
ChatGPT 的新图像生成器非常擅长伪造收据
网络·人工智能·安全·chatgpt·风险·技术·欺诈
virelin_Y.lin2 小时前
系统与网络安全------Windows系统安全(7)
windows·web安全·系统安全·ftp
小吃饱了2 小时前
TCP可靠性传输
网络·网络协议·tcp/ip
写代码的小王吧3 小时前
【Java可执行命令】(十)JAR文件签名工具 jarsigner:通过数字签名及验证保证代码信任与安全,深入解析 Java的 jarsigner命令~
java·开发语言·网络·安全·web安全·网络安全·jar