Qt|Qt自动获取本机IP与TCP客户端绑定IP和端口 - Qt学习

【Qt|Qt自动获取本机IP与TCP客户端绑定IP和端口 - Qt学习】客户端使用特定的端口号与服务器进行通信,这是在进行网络编程开发时候经常容易遇到的问题。这篇博客是关于网络编程中客户端编写的小总结。
绑定端口号 在Qt的Socket开发中,有丰富的函数可以调用,要实现客户端绑定指定的端口,只需要在创建Socket之后,调用bind(port)函数进行端口的绑定即可。
绑定IP和端口 直接调用QHostAddress构造函数产生一个IP地址,调用bind()函数的另一个重载函数bind(IP,port)进行IP和端口的绑定。为了调试与上网工作两不误,这里有一个小技巧,将电脑网卡配置为多IP,客户对调试的IP进行绑定,同时不影响主IP的正常使用,可以参照我的博客“Windows同时使用两个IP上网”。截取部分代码如下

QHostAddress localIP = QHostAddress("30.252.22.10"); IP = IPaddrLineEdit->text(); port = portLineEdit->text().toInt(); clientSocket->abort(); if(clientSocket->bind(localIP,42005)) { qDebug() << "1 LocalHost:" << localIP.toString(); qDebug() << "2 localPort:" << clientSocket->localPort(); } clientSocket->connectToHost(IP,port);

自动搜索本机IP 获取本机所有IP,QNetworkInterface类中提供了一个便利的静态函数allAddresses(),用于返回一个QHostAddress主机地址列表。参考自https://blog.csdn.net/liang19890820/article/details/52273986。下面是获取本地IPv4的代码实现
QList list = QNetworkInterface::allAddresses(); foreach (QHostAddress address, list) { if(address.protocol() == QAbstractSocket::IPv4Protocol) { if(address.toString().contains("127.0.")) continue; qDebug() << "Address : " << address.toString(); } else if (address.isNull())// 主机地址为空 continue; }


    推荐阅读