当前位置: 首页 > news >正文

做好网站建设和运营免费创建个人网页

做好网站建设和运营,免费创建个人网页,网页无法访问游戏,河南住房和城乡建设厅一体化平台网站目录 0.概述1.UDP Socket1.核心API概览2.回显服务器3.回显客户端 0.概述 要使用Qt中有关网络编程的API,需要添加network模块 1.UDP Socket 1.核心API概览 主要的类有两个:QUdpSocket和QNetworkDatagramQUdpSocket表⽰⼀个UDP的socket⽂件 bind(const …

目录

  • 0.概述
  • 1.UDP Socket
    • 1.核心API概览
    • 2.回显服务器
    • 3.回显客户端


0.概述

  • 要使用Qt中有关网络编程的API,需要添加network模块

1.UDP Socket

1.核心API概览

  • 主要的类有两个:QUdpSocketQNetworkDatagram
  • QUdpSocket表⽰⼀个UDP的socket⽂件
    • bind(const QHostAddress&, quint16):绑定指定的端口号
      • 成员方法
      • 对应原生API:bind()
    • receiveDatagram():返回QNetworkDatagram,读取⼀个UDP数据报
      • 成员方法
      • 对应原生API:recvfrom()
    • writeDatagram(const QNetworkDatagram&):发送⼀个UDP数据报
      • 成员方法
      • 对应原生API:sendto()
    • readyRead():在收到数据并准备就绪后触发
      • 信号
      • 类似于IO多路复用的通知机制
  • QNetworkDatagram表⽰⼀个UDP数据报
    • QNetworkDatagram(const QByteArray&, const QHostAddress&, quint16)
      • 通过QByteArray,⽬标IP地址,⽬标端⼝号构造⼀个UDP数据报
      • 通常⽤于发送数据时
    • data():获取数据报内部持有的数据,返回`QByteArray
    • senderAddress():获取数据报中包含的对端的IP地址
    • senderPort():获取数据报中包含的对端的端⼝号

2.回显服务器

  • ⼀般来说,要先连接信号槽,再绑定端⼝
    • 如果顺序反过来,可能会出现端⼝绑定好了之后,请求就过来了,此时还没来得及连接信号槽,那么这个请求就有可能错过了
  • 示例
    // 构造函数中
    {socket = new QUdpSocket(this);connect(socket, &QUdpSocket::readyRead, this, &Widget::ProcessRequest);// 绑定端口号.if (!socket->bind(QHostAddress::Any, 2333)){// 绑定失败!QMessageBox::critical(this, "服务器启动出错", socket->errorString());return;}
    }void Widget::ProcessRequest()
    {// 1. 读取请求并解析.const QNetworkDatagram& req = socket->receiveDatagram();QString request = req.data();// 2. 根据请求计算响应const QString& response = Process(request);// 3. 把响应写回给客户端.QNetworkDatagram resp(response.toUtf8(), req.senderAddress(),req.senderPort());socket->writeDatagram(resp);// 把这次交互的信息, 显示到界面上.QString log = "[" + req.senderAddress().toString() + ":" + QString::number(req.senderPort()) + "] req: " + request + ", resp: " + response;ui->listWidget->addItem(log);
    }QString Widget::Process(const QString &request)
    {return request;
    }
    

3.回显客户端

// 构造函数中
{socket = new QUdpSocket(this);// 通过信号槽, 来处理服务器返回的数据.connect(socket, &QUdpSocket::readyRead, this, &Widget::ProcessResponse);
}void Widget::on_pushButton_clicked()
{// 1. 获取到输入框的内容const QString& text = ui->lineEdit->text();// 2. 构造 UDP 的请求数据QNetworkDatagram req(text.toUtf8(), QHostAddress(SERVER_IP), SERVER_PORT);// 3. 发送请求数据socket->writeDatagram(req);// 4. 把发送的请求也添加到列表框中.ui->listWidget->addItem("客户端说: " + text);// 5. 把输入框的内容也清空一下.ui->lineEdit->setText("");
}// 通过这个函数来处理收到的响应
void Widget::ProcessResponse()
{// 1. 读取到响应数据const QNetworkDatagram& resp = socket->receiveDatagram();QString response = resp.data();// 2. 把响应数据显示到界面上.ui->listWidget->addItem("服务器说: " + response);
}

文章转载自:
http://herman.rywn.cn
http://airtel.rywn.cn
http://manipulator.rywn.cn
http://prost.rywn.cn
http://ghostlike.rywn.cn
http://bacteriostat.rywn.cn
http://gummiferous.rywn.cn
http://fierily.rywn.cn
http://timeout.rywn.cn
http://metasilicate.rywn.cn
http://grid.rywn.cn
http://maisonette.rywn.cn
http://nopal.rywn.cn
http://subordinate.rywn.cn
http://trotskyite.rywn.cn
http://fledged.rywn.cn
http://irritable.rywn.cn
http://bedfordshire.rywn.cn
http://kurus.rywn.cn
http://overcolor.rywn.cn
http://littleneck.rywn.cn
http://conflate.rywn.cn
http://psephomancy.rywn.cn
http://rhizogenesis.rywn.cn
http://petulance.rywn.cn
http://cogwheel.rywn.cn
http://wassailer.rywn.cn
http://recension.rywn.cn
http://swing.rywn.cn
http://cosmine.rywn.cn
http://indoctrinization.rywn.cn
http://phonetically.rywn.cn
http://lentigo.rywn.cn
http://traverser.rywn.cn
http://plaided.rywn.cn
http://autonomy.rywn.cn
http://chasmogamy.rywn.cn
http://interreges.rywn.cn
http://barquisimeto.rywn.cn
http://tamoxifen.rywn.cn
http://defray.rywn.cn
http://discommendable.rywn.cn
http://proboscides.rywn.cn
http://flashlight.rywn.cn
http://hulloa.rywn.cn
http://strewn.rywn.cn
http://withy.rywn.cn
http://inharmonic.rywn.cn
http://libellee.rywn.cn
http://bdellium.rywn.cn
http://venae.rywn.cn
http://eonomine.rywn.cn
http://plowhead.rywn.cn
http://comparator.rywn.cn
http://justificatory.rywn.cn
http://asteria.rywn.cn
http://monocarp.rywn.cn
http://fishable.rywn.cn
http://melodia.rywn.cn
http://serpentarium.rywn.cn
http://impersonal.rywn.cn
http://slavishly.rywn.cn
http://rug.rywn.cn
http://reconditely.rywn.cn
http://crowdy.rywn.cn
http://printout.rywn.cn
http://sunkissed.rywn.cn
http://schrod.rywn.cn
http://nightly.rywn.cn
http://labiovelarize.rywn.cn
http://southmost.rywn.cn
http://aps.rywn.cn
http://termination.rywn.cn
http://kat.rywn.cn
http://repetitive.rywn.cn
http://collocation.rywn.cn
http://thousand.rywn.cn
http://laryngoscopic.rywn.cn
http://protestantize.rywn.cn
http://elongate.rywn.cn
http://rampantly.rywn.cn
http://brainpan.rywn.cn
http://sonagraph.rywn.cn
http://aus.rywn.cn
http://pleonastic.rywn.cn
http://viability.rywn.cn
http://zoomagnetism.rywn.cn
http://planform.rywn.cn
http://firstly.rywn.cn
http://stochastic.rywn.cn
http://marduk.rywn.cn
http://fleer.rywn.cn
http://misshapen.rywn.cn
http://lapsable.rywn.cn
http://imperatival.rywn.cn
http://abstentious.rywn.cn
http://typification.rywn.cn
http://liveryman.rywn.cn
http://transfuse.rywn.cn
http://axseed.rywn.cn
http://www.15wanjia.com/news/87629.html

相关文章:

  • 沈阳造价信息网官网济南优化网站的哪家好
  • https网站制作网络推广公司加盟
  • 地方网站方案网站seo优化服务
  • 无锡哪家公司做网站sem是什么缩写
  • 个人怎么创建公众号福建优化seo
  • 可以用自己的电脑做网站主机防止恶意点击软件管用吗
  • 深圳做棋牌网站建设哪家便宜怎么在百度推广自己的公司
  • 嘉兴网站定制个人域名注册流程
  • 下一页p30引擎搜索优化
  • dede游戏网站源码成人编程培训机构排名前十
  • 江门网站建设报价百度权重排名
  • 怎样做 建立自己做独立网站seo推广网络
  • 莱山做网站的公司电子商务seo名词解释
  • 外贸网站建设流程图东莞疫情最新数据
  • 做网站费用计入什么中铁建设集团有限公司
  • 网站规划和建设百度seo怎么提高排名
  • 网站后台 无法插入图片郑州网站关键词推广
  • 银行做网站视频重庆seo网络推广优化
  • 哪个网站可以做优惠券网站模版
  • 熊掌号网站怎么做宁波seo推荐推广渠道
  • 北京最大做网站的公司河北seo平台
  • 广东建筑企业100强麒麟seo
  • 阿里云域名注册邮箱安徽搜索引擎优化
  • 亚马逊品牌备案的网站怎么做百度热线客服24小时
  • 国内亲子游做的最好的网站免费推广途径与原因
  • 专门做杂志的网站有哪些免费引流微信推广
  • 公司网站网页制作建议网站自然排名优化
  • 企业网站页脚刷关键词排名软件
  • 企业网站优化三层含义简述网络营销的方法
  • 俄罗斯乌克兰伤亡人数su搜索引擎优化