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

深圳网站建设服务中心wordpress制作进度条

深圳网站建设服务中心,wordpress制作进度条,wordpress 应用模板下载,seo站长平台概述 UDP (User Datagram Protocol)是一种简单的传输层协议。与TCP不同#xff0c;UDP不提供可靠的数据传输和错误检测机制。UDP主要用于那些对实时性要求较高、对数据传输可靠性要求较低的应用#xff0c;如音频、视频、实时游戏等。 UDP使用无连接的数据报传输模式。在传…概述 UDP (User Datagram Protocol)是一种简单的传输层协议。与TCP不同UDP不提供可靠的数据传输和错误检测机制。UDP主要用于那些对实时性要求较高、对数据传输可靠性要求较低的应用如音频、视频、实时游戏等。 UDP使用无连接的数据报传输模式。在传输数据之前发送方和接收方不需要建立一个持久的连接只需发送数据报文即可。每个数据报文都是独立的没有前后关系因此也不必保证按照发送的顺序接收。 UDP协议的特点包括 无连接性发送方和接收方之间不需要建立和维护连接。快速性由于无连接性UDP的传输速度相对较快。无可靠性保证UDP不提供可靠的数据传输不保证数据的完整性和正确性。简单性UDP的协议头部较短占用的数据传输量较小。 UDP数据传输示意图 QUdpSocket QUdpSocket类提供了UDP套接字。 QUdpSocket是QAbstractSocket的一个子类它允许发送和接收UDP数据报。 这里的socket就是所谓的套接字简单地说就是一个Ip地址一个Port端口号。 使用这个类最常见的方法是使用bind()绑定到一个地址和端口然后调用writeDatagram()和readDatagram() / receiveDatagram()来传输数据。如果想使用标准的QIODevice函数read() readLine() write()等必须首先通过调用connectToHost()将套接字直接连接到对等体。 套接字每次将数据报写入网络时都会发出bytesWritten()信号。如果您只想发送数据报则不需要调用bind()。 每当数据报到达时就会发出readyRead()信号。在这种情况下hasPendingDatagrams()返回true。调用pendingDatagramSize()来获取第一个挂起数据报的大小并调用readDatagram()或receiveDatagram()来读取它。 注意:当接收readyRead()信号时应该读取传入的数据报否则将不会为下一个数据报发出该信号。 QUdpSocket支持IPv4广播IPv4广播是一种在IPv4网络中向同一网络中的所有主机发送数据的方式。 在IPv4网络中广播地址是一个特殊的IP地址用于指示对应网络中的所有主机。 IPv4广播使用的是一个特定的IP地址即网络地址的所有主机位都为1的情况下主机地址为0。例如在一个192.168.0.0/24的网络中广播地址为192.168.0.255。 使用IPv4广播可以将数据一次性发送到同一网络中的所有主机而不需要逐个发送给每个主机。这在某些应用中非常有用例如在局域网中通知所有主机进行某项操作或者在DHCP协议中分发IP地址等。 然而由于IPv4广播发送的数据会被同一网络中的所有主机接收这也可能会造成一些安全和性能问题。因此在IPv4网络中广播的使用需要谨慎并需要对广播进行适当的限制和控制。 例如 void Server::initSocket(){udpSocket new QUdpSocket(this);udpSocket-bind(QHostAddress::LocalHost, 7755);connect(udpSocket, SIGNAL(readyRead()),this, SLOT(readPendingDatagrams()));}void Server::readPendingDatagrams(){while (udpSocket-hasPendingDatagrams()) {QNetworkDatagram datagram udpSocket-receiveDatagram();processTheDatagram(datagram);}}QUdpSocket还支持UDP组播。使用joinMulticastGroup()和leaveMulticastGroup()来控制组成员使用QAbstractSocket::MulticastTtlOption和QAbstractSocket::MulticastLoopbackOption来设置TTL和loopback套接字选项。使用setMulticastInterface()控制组播数据报的出接口使用multicastInterface()进行查询。 使用QUdpSocket还可以使用connectToHost()与UDP服务器建立虚拟连接然后使用read()和write()交换数据报而无需指定每个数据报的接收者。 示例 以下是一个发送者一个接收者发送者定时发送数据接收者进行显示 sender.h #include QWidgetQT_BEGIN_NAMESPACE class QDialogButtonBox; class QLabel; class QPushButton; class QTimer; class QUdpSocket; QT_END_NAMESPACEclass Sender : public QWidget {Q_OBJECTpublic:Sender(QWidget *parent 0);private slots:void startBroadcasting();void broadcastDatagram();private:QLabel *statusLabel;QPushButton *startButton;QPushButton *quitButton;QDialogButtonBox *buttonBox;QUdpSocket *udpSocket;QTimer *timer;int messageNo; };sender.cpp #include QtWidgets #include QtNetwork#include sender.hSender::Sender(QWidget *parent): QWidget(parent) {statusLabel new QLabel(tr(绑定 端口 45454));statusLabel-setWordWrap(true);startButton new QPushButton(tr(Start));quitButton new QPushButton(tr(Quit));buttonBox new QDialogButtonBox;buttonBox-addButton(startButton, QDialogButtonBox::ActionRole);buttonBox-addButton(quitButton, QDialogButtonBox::RejectRole);timer new QTimer(this);udpSocket new QUdpSocket(this);messageNo 1;connect(startButton, SIGNAL(clicked()), this, SLOT(startBroadcasting()));connect(quitButton, SIGNAL(clicked()), this, SLOT(close()));connect(timer, SIGNAL(timeout()), this, SLOT(broadcastDatagram()));QVBoxLayout *mainLayout new QVBoxLayout;mainLayout-addWidget(statusLabel);mainLayout-addWidget(buttonBox);setLayout(mainLayout);setWindowTitle(tr(广播发送)); }void Sender::startBroadcasting() {startButton-setEnabled(false);timer-start(1000); }void Sender::broadcastDatagram() {statusLabel-setText(tr(现在 广播 信息 %1).arg(messageNo));QByteArray datagram 广播 信息 QByteArray::number(messageNo);udpSocket-writeDatagram(datagram.data(), datagram.size(),QHostAddress::Broadcast, 45454);messageNo; } receiver.h #include QWidgetQT_BEGIN_NAMESPACE class QLabel; class QPushButton; class QUdpSocket; class QAction; QT_END_NAMESPACEclass Receiver : public QWidget {Q_OBJECTpublic:Receiver(QWidget *parent 0);private slots:void processPendingDatagrams();private:QLabel *statusLabel;QPushButton *quitButton;QUdpSocket *udpSocket; };receiver.cpp #include QtWidgets #include QtNetwork#include receiver.hReceiver::Receiver(QWidget *parent): QWidget(parent) {statusLabel new QLabel(tr(监听 广播 信息));statusLabel-setWordWrap(true);quitButton new QPushButton(tr(Quit));udpSocket new QUdpSocket(this);udpSocket-bind(45454, QUdpSocket::ShareAddress);connect(udpSocket, SIGNAL(readyRead()),this, SLOT(processPendingDatagrams()));connect(quitButton, SIGNAL(clicked()), this, SLOT(close()));QHBoxLayout *buttonLayout new QHBoxLayout;buttonLayout-addStretch(1);buttonLayout-addWidget(quitButton);buttonLayout-addStretch(1);QVBoxLayout *mainLayout new QVBoxLayout;mainLayout-addWidget(statusLabel);mainLayout-addLayout(buttonLayout);setLayout(mainLayout);setWindowTitle(tr(广播 接收)); }void Receiver::processPendingDatagrams() {while (udpSocket-hasPendingDatagrams()) {QByteArray datagram;datagram.resize(udpSocket-pendingDatagramSize());udpSocket-readDatagram(datagram.data(), datagram.size());statusLabel-setText(tr(接收 数据: \%1\).arg(datagram.data()));} }效果 默认显示如下 当点击发送时 结论 青春就像一只容器装满了不安躁动青涩与偶尔的疯狂。
http://www.zqtcl.cn/news/47279/

相关文章:

  • 自助建站上建的网站免费吗中国建设银行网站北京网点
  • 网站设计师和ui设计师尚石设计深圳有限公司
  • html音乐网站源码佛山网站建设开发
  • 物业管理 网站开发湖南seo网站多少钱
  • 淄博北京网站建设搜狗网站收录提交入口
  • 公共部门网站建设维护大航母网站建设
  • 个人备案网站做电影站怎样更换网站cms
  • 技术支持 深圳网站建设贝尔利联想公司网站建设现状
  • 电商扶贫网站建设网络游戏举报投诉官网12318
  • 莱西建设局官方网站网站开发个人基本情况1000字
  • 制作可以赚钱的网站怎么做英文的网站
  • 做网站大概需要几步品牌网站建设大概费用
  • 建设企业网站地址wordpress 评论数
  • 建设明星网站的目的北京网站建设报价明细
  • jsp网站建设教程建网站程序
  • seo优化百度seo谷歌seo外贸推广网站seo优化运新开网店自己如何推广
  • 一个返利网站建设流程邢台做外贸网站
  • 网站建设会销如何给网店做推广
  • 做网站文字居中代码做网站找投资人
  • 百度指数下载模板网站不利于seo吗
  • 网站建设的市场调研做优惠卷网站倒闭了多少
  • 惠州水口网站建设专业建站工作室
  • 手机网站商城建设答辩基本型企业网站论文
  • 成都网站建设系统wordpress调用tag标签带超链接
  • 网站建设 考核指标天元建设集团有限公司拖欠农民工工资
  • 视频播放网站开发山东网站优化
  • 网站建设最新模板下载文旅策划公司
  • 维护中网站wordpress-5.2.2英文转中文
  • 学习网站建设建议调查问卷qq是哪个公司旗下的游戏
  • 官方静态网站模板随州网站建设有限公司