【Qt 学习之路】QTcpSocket客户端/服务端互发字符串Demo

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

先看下运行效果:

代码我已经上传到CSDN:

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

Github地址:

GitHub - ShaShiDiZhuanLan/Demo_TcpSocket_Qt: QTcpSocket客户端、服务端互发字符串的示例

码云地址:

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沙振宇

你的鼓励将是我创作的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值