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

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

 

先看下运行效果:

 

代码我已经上传到CSDN:

http://download.csdn.net/detail/u014597198/9689618

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();
}

 

展开阅读全文
©️2020 CSDN 皮肤主题: 代码科技 设计师: Amelia_0503 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值