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 小时前
让USB打印机变网络打印机,秀才USB打印服务器
linux·运维·网络
Ha_To9 小时前
2026.1.5 Windows Server 用户与组
windows
悟能不能悟10 小时前
feignclient,参数传body,应该怎么写
windows
yugi98783811 小时前
异构网络下信道环境建模方法及应用
开发语言·网络
Xの哲學11 小时前
深入解析 Linux systemd: 现代初始化系统的设计与实现
linux·服务器·网络·算法·边缘计算
C_心欲无痕12 小时前
网络相关 - 强缓存与协商缓存讲解
前端·网络·网络协议·缓存
三两肉12 小时前
HTTP/1.1到HTTP/3:互联网通信协议的三代演进之路
网络·网络协议·http·http3·http2·http1.1
seasonsyy12 小时前
为虚拟机分配内存和磁盘容量
windows·操作系统·内存·vmware·磁盘空间
Jul7_LYY12 小时前
03雷达的有源干扰分类
网络·人工智能·分类
CoderIsArt12 小时前
基于iSCSI的光存储软件架构设计 (Windows + Qt版本)
开发语言·windows·qt