**UDP通信**

UDP通信

 UDP(用户数据报协议)是一种轻量级、不可靠、面向数据报、无连接的协议。它可以在可靠性不重要的情况下使用。

QUdpSocket是QAbstractSocket的一个子类,允许您发送和接收UDP数据报。

使用此类最常见的方法是使用bind()绑定到地址和端口,然后调用writeDatagram()和readDatagram()/receiveDatagram()来传输数据。

如果要使用标准的QIODevice函数read()、readLine()、write()等,必须首先通过调用connectToHost()将套接字直接连接到对等机。

每次向网络写入数据报时,套接字都会发出bytesWrited()信号。如果只想发送数据报,则不需要调用bind()。

readyRead()信号在数据报到达时发出。在这种情况下,hasPendingDatagrams()返回true。调用pendingDatagramSize()以获取第一个挂起数据报的大小,并调用readDatagram()或receiveDatagram()来读取它。

**注意**:当您收到readyRead()信号时,应该读取一个传入的数据报,否则下一个数据报将不会发出此信号。
Example:

  void Server::initSocket()
  {
      udpSocket = new QUdpSocket(this);//设置父对象
      udpSocket->bind(QHostAddress::LocalHost, 7755);//绑定地址和端口

      connect(udpSocket, &QUdpSocket::readyRead,
              this, &Server::readPendingDatagrams);//读取数据
  }

  void Server::readPendingDatagrams()
  {
      while (udpSocket->hasPendingDatagrams()) {
          QNetworkDatagram datagram = udpSocket->receiveDatagram();
          processTheDatagram(datagram);
      }
  }

QUdpSocket还支持UDP多播。

使用QUdpSocket,还可以使用connectToHost()与UDP服务器建立虚拟连接,然后使用read()和write()交换数据报,而不必为每个数据报指定接收方。

广播发送器、广播接收器、多播发送器和多播接收器示例说明了如何在应用程序中使用qdpsocket。

使用joinMulticastGroup()和leaveMulticastGroup()控制组成员身份,使用QAbstractSocket::MulticastTplotation和QAbstractSocket::MulticastLoopbackOption设置TTL和环回套接字选项。使用setMulticastInterface()控制多播数据报的传出接口,使用multicastInterface()查询它。

另请参见qtcsocket和QNetworkDatagram。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值