在QT中如果要使用udp,就要#include <QtNetwork/QUdpSocket>,同时在.pro文件中加入QT+=network
声明一个UPD类:QUdpSocket *sender,receiver;
之后要初始化:sender = new QUdpSocket(this);
如果是做接收用的话还要用bind绑定端口:receiver->bind(45454,QUdpSocket::ShareAddress);
然后把信号和槽函数关联起来: connect(receiver,SIGNAL(readyRead()),this,SLOT(processPendingDatagram()));
定义一个要发送的数据包:QByteArray datagram;
把数据用append放到数据包中: datagram.append(send_data);
发送数据:sender->writeDatagram(datagram.data(), datagram.size(), QHostAddress(ip_address),45454); //如果数据是空的话是不会发送的
接收数据:receiver->hasPendingDatagrams() //检测是否有数据要接收,最好配合while使用:while(receiver->hasPendingDatagrams()){} //当有数据时才执行之后的程序
同样要定义一个数据包:QByteArray rec_data;
重新分配数据包的长度:rec_data.resize(receiver->pendingDatagramSize());
然后把接收的数据放入数据包中:receiver->readDatagram(rec_data.data(),rec_data.size());