Qt中UDP简单使用

Qt中UDP简单使用

UDP(User Datagram Protocol,用户数据报协议)
UDP是一个轻量级、不可靠、面向数据报的、无连接的协议,多用于可靠性要求不严格,不是非常重要的传输
QUdpSocket类继承自QAbstractSocket,用来发送和接收UDP数据报,”Socket”即套接字,套接字即IP地址+端口号其中IP地址指定了网络中的一台主机,二端口号则指定了该主机上的一个网络程序,使用套接字即可实现网络上的两个应用程序之间的通信。

客户端:

    QUdpSocket* m_sender;  
    m_sender=new QUdpSocket(this);
   
//获取用户输入的信息
//要将QString转为字符串所以调用toUtf8();
   	QByteArray bytGram=ui->lineEdit->text().toUtf8();

//将信息写入包中QHostAddress::Broadcast枚举值表示一广播方式
//(既所有用户都可接收到)详情可查帮助文档      
//8888表示端口号,相当于指明这个电脑的那个应用程序用这个
//将需要发送的消息写到Socket中,写多少数据
   	 m_sender->writeDatagram(bytGram,bytGram.size(),QHostAddress::Broadcast,8888);

小结:

  1. 首先实例化一个QUdpSocket对象。
  2. 然后调用writeDatagram()函数进行写数据到数据包中。

接收端:`

        QUdpSocket*m_reciver;
        m_reciver=new QUdpSocket(this);
  

                  
//绑定(选择要接受那个端口发来的消息,和绑定的模式)
//QUdpSocket::ShareAddress这里用的共享地址,其他端口号一样的也可以和此服务端进行通信
		  m_reciver->bind(8888,QUdpSocket::ShareAddress);
//当服务端收到客户端发来的消息时会触发readyRead,信号
//onReciveMsg是我自定义的槽函数,用来处理从客户端接受到的消息
   		 connect(m_reciver,&QUdpSocket::readyRead,
          				  this,&Widget::onReciveMsg);

 void Widget::onReciveMsg()
  {
      //hasPendingDatagrams()如果有数据包未读,返回true
    while(m_reciver->hasPendingDatagrams())
    {
	 //用字符串来接收数据包中的内容
        QByteArray dataGram;

	//pendingDatagramSize()返回未读数据包的大小
        dataGram.resize(m_reciver->pendingDatagramSize());
	
	//将数据读写到dataGram中,并指定要读多少的是数据
        m_reciver->readDatagram(dataGram.data(),dataGram.size());

        ui->label->setText(dataGram);
    }
}

小结:

  1. 首先实例化一个QUdpSocket对象
  2. 调用bind()进行绑定
  3. 当客户端有数据包需要读时会触发QUdpSocket::readyRead,信号,接下来进行readDatagram()读数据。
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值