0
点赞
收藏
分享

微信扫一扫

QTcpSocket客户端、服务端互发字符串Demo

狐沐说 2022-10-31 阅读 174


最近又遇到tcp问题,发现知识不用忘得好快!于是做了一个简单的demo。

 

先看下运行效果:

QTcpSocket客户端、服务端互发字符串Demo_tcp


Github地址:

​​https://github.com/ShaShiDiZhuanLan/Demo_TcpSocket_Qt​​

码云地址:

​​https://gitee.com​​​​/ShaShiDiZhuanLan/​​​​TCP_Demo​​

今天做了个类似的项目,发现服务端获取局域网IP这里不准确,我们是要获取192.168.*.*的IP地址,

代码改为如下:

QString TcpSever::getIPAddress()
{
//获取局域网IP地址192.168.*.*
QString localHostName = QHostInfo::localHostName();
QHostInfo info = QHostInfo::fromName(localHostName);
foreach(QHostAddress address, info.addresses()) {
if (address.protocol() == QAbstractSocket::IPv4Protocol) {
return address.toString();
}
}
}

或者:

QString ip = QHostInfo::fromName(QHostInfo::localHostName()).addresses().last().toString();

获取本机外网地址修改:

//返回外网IP
QString TcpSever::returnOutIP()
{
QString tmp = GetHtml("https://ip.cn/");
qDebug() << "returnOutIP" << tmp;
return GetNetIP(tmp);
}

QString TcpSever::GetHtml(QString url)
{
QNetworkAccessManager *manager = new QNetworkAccessManager();
QNetworkReply *reply = manager->get(QNetworkRequest(QUrl(url)));
QByteArray responseData;
QEventLoop eventLoop;
QObject::connect(manager, SIGNAL(finished(QNetworkReply *)), &eventLoop, SLOT(quit()));
eventLoop.exec();
responseData = reply->readAll();
return QString(responseData);
}

QString TcpSever::GetNetIP(QString webCode)
{
QString tmp = webCode.split("IP: ").last();
return tmp.split("\n<br").first();
}

 

举报

相关推荐

0 条评论