IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> QT学习_http和udp -> 正文阅读

[网络协议]QT学习_http和udp

HTTP

需要用到的类:
QNetworkRequest
QNetworkAccessManager
QNetworkReply

{
 QString x = "";
    QString url = QString("https://<ip address>/<command>/key1=value&key2=value");
    
    QNetworkRequest request;
    request.setUrl(QUrl(url));
    QNetworkAccessManager naManager(this);
    QNetworkReply* reply = naManager.get(request);
    connect(reply, &QNetworkReply::finished, this, [this,reply](){
        if(reply->error() != QNetworkReply::NoError){
        //reply在回应中删去
            reply->deleteLater();
            emit sigHttpRequestFinished();
            return;
        }
        qDebug()<<reply->readAll();
        emit sigHttpRequestFinished();
        reply->deleteLater();
    });
    
    QEventLoop loop;
    connect(this,SIGNAL(sigHttpRequestFinished()),&loop,SLOT(quit()));
    loop.exec();
}

自定义reply超时时间

void replyTimeout(QNetworkReply* reply, int timeout)
{
    QTimer::singleShot(timeout,this,[this](){
       if(reply) reply->close();
    });
}

UDP组播

先绑定端口,

udpSocket->bind(QHostAddress::AnyIPv4,groupPort,QUdpSocket::SareAddress)

然后使用函数加入、退出组播

bool QUdpSocket::joinMulticastGroup(const QHostAddress &groupAddress)

bool QUdpSocket::leaveMulticastGroup(const QHostAddress &groupAddress)

发送和接受组播数据报

  • 发送:
    writeDatagram(const QByteArray &datagram, const QHostAddress &host, quint16 port)
  • 接收:
    • qint64 QUdpSocket::readDatagram(char *data, qint64 maxSize, QHostAddress *address = nullptr, quint16 *port = nullptr)
    • QNetworkDatagram receiveDatagram(qint64 maxSize = -1)
      获取QNetworkDatagram 的senderAddress和senderPort和data
void PepperlFuchsIPConfigDlg::SSDPsearch()
{
    //SSDP寻找设备
    QString searchRequest = "M-SEARCH * HTTP/1.1\r\n"
                             "H0ST: 239.255.255.250:1900\r\n"
                             "ST: urn:pepperl-fuchs-com:device:R2000:1\r\n"
                             "MAN: \"ssdp:discover\"\r\n"
                             "MX: 1\r\n";
    //使用UDP组播
    quint16 port = 1900;
    QString hostAddress = "239.255.255.250";
    QHostAddress groupAddress(hostAddress);
    _udpSocket = new QUdpSocket(this);
    _udpSocket->setSocketOption(QAbstractSocket::MulticastTtlOption,1);

    //绑定ip,加入组播,发送消息
    _udpSocket->bind(QHostAddress::AnyIPv4,port,QUdpSocket::ShareAddress);
    _udpSocket->joinMulticastGroup(groupAddress);
    _udpSocket->writeDatagram(searchRequest.toUtf8(),groupAddress,port);

    //获取udp消息
    connect(_udpSocket,&QUdpSocket::readyRead,this,[this](){
        QNetworkDatagram datagram = _udpSocket->receiveDatagram();
        qDebug()<<"peer address:"<<datagram.senderAddress();
        qDebug()<<"peer port:"<<datagram.senderPort();
        qDebug()<<"peer data:"<<datagram.data();
    });

}

void PepperlFuchsIPConfigDlg::SSDPsearchOff()
{
    //退出组播,断开绑定
    _udpSocket->leaveMulticastGroup(_groupAddress);
    _udpSocket->abort();
    _udpSocket->deleteLater();
    _udpSocket = Q_NULLPTR;
}
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-12-08 14:09:51  更:2021-12-08 14:10:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年7日历 -2024/7/8 12:21:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码