【发布时间】:2021-03-26 02:47:34
【问题描述】:
我尝试将我的套接字绑定到某个随机地址 10.1.1.1:12001,并得到 QAbstractSocket::SocketAddressNotAvailableError。 比我写的简单代码:
for (int i = 0; i < 256; i++) {
QHostAddress address0(QString::number(i) + ".0.0.1");
quint16 port = 12101;
QUdpSocket* m_socket = new QUdpSocket();
if (m_socket->bind(address0, port, QUdpSocket::ShareAddress | QUdpSocket::ReuseAddressHint)) {
qDebug() << i;
}
}
才知道IP必须以127或224-239开头。所以它一定是D类地址。。但我只是在qt文档中没有找到任何东西。
这是正常行为吗?是否有可能使用全球网络 IP 进行绑定?或者至少使用 192.168.x.x 作为局域网内另一台计算机的 IP?
【问题讨论】:
-
这完全取决于您的 LAN/接口的配置方式。 127.*.*.* 是本地环回地址(即它们代表“这台”计算机),224-239 是 ipv4 多播地址前缀。您可能可以使用
QNetworkInterface::allAddresses之类的东西来获取您需要的信息。