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

相关推荐
Dawn-bit2 小时前
Linux磁盘分区与Swap和磁盘故障查询
linux·运维·服务器·网络·云计算
llilian_163 小时前
便携式相位测量模块应用方案的核心优势
网络·功能测试·单片机
QH139292318804 小时前
# R&S ZNB43 ZNA43 ZNA67矢量网络分析仪
开发语言·网络·php
栋***t4 小时前
2026年不止防作弊,麦塔在线培训系统培训与考试安全的体系化设计
网络·安全
脚踏实地皮皮晨5 小时前
003003001_Grid控件
开发语言·windows·算法·c#·visual studio
ziguo11225 小时前
Windows API MessageBox 函数详解
c语言·c++·windows·visualstudio
宁风NF5 小时前
JavaScript:网络请求与前端通信
开发语言·前端·javascript·网络·学习·ecmascript
孪生质数-6 小时前
AI Agent 工程实践(一):大模型 API 接入示范
网络·人工智能·ai·chatgpt·github·claude·claudecode
雾里0不看花6 小时前
【App Service Linux】在Linux App Service中安装 tcpdump 并抓取网络包
linux·网络·tcpdump
sukalot6 小时前
windows网络适配器驱动开发-WiFiCx Wi-Fi 7 功能要求(二)
windows·驱动开发