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

相关推荐
笙囧同学1 小时前
基于大数据技术的疾病预警系统:从数据预处理到机器学习的完整实践(后附下载链接)
大数据·网络·机器学习
盖雅工场3 小时前
零工合规挑战:盖雅以智能安全体系重构企业用工风控
网络·安全·重构
厦门辰迈智慧科技有限公司4 小时前
排水管网实时监测筑牢城市安全防线
网络·物联网·安全·自动化·监测
爱吃小白兔的猫6 小时前
【基础篇三】WebSocket:实时通信的革命
网络·websocket·网络协议
21号 16 小时前
4.应用层自定义协议与序列化
运维·服务器·网络
云畅新视界6 小时前
HOTDOG构建“IP×用户”共创生态,激活数字文化新势能
网络·网络协议·tcp/ip
无线图像传输研究探索6 小时前
单兵图传终端:移动场景中的 “实时感知神经”
网络·人工智能·5g·无线图传·5g单兵图传
深蓝海拓7 小时前
通信名词解释:I2C、USART、SPI、RS232、RS485、CAN、TCP/IP、SOCKET、modbus等
网络·网络协议·tcp/ip
xx.ii7 小时前
4.Linux 应用程序的安装和管理
linux·服务器·网络
java叶新东老师7 小时前
解决windows系统下 idea、CLion 控制台中文乱码问题
java·windows·intellij-idea