首先在.pro文件中加入 QT +=network;
客戶端
1.建立socket
sender = new QUdpSocket(this);
2.綁定端口
sender->bind(45453,QUdpSocket::ShareAddress);
3.接受數據
connect(sender,SIGNAL(readyRead()),this,SLOT(processPendingDatagram()));
void processPendingDatagram() //處理等待的數據報 { while(sender->hasPendingDatagrams()) //擁有等待的數據報 { QByteArray datagram; //擁於存放接收的數據報 datagram.resize(sender->pendingDatagramSize()); sender->readDatagram(datagram.data(),datagram.size()); unsigned short size = datagram.size(); unsigned char msg[10] = {0}; memcpy(msg, datagram.data(), size); unsigned short arr = msg[0]; arr = (arr<<8)+msg[1]; qDebug()<<msg[0]<<msg[1]<<msg[2]<<msg[3]; } }
4.發送數據
sender->writeDatagram((char*)msg,3, QHostAddress::Broadcast,45454);
服務端
1.建立Socket
receiver = new QUdpSocket(this);
2.綁定端口
receiver->bind(45454,QUdpSocket::ShareAddress);
3.接受數據
connect(receiver,SIGNAL(readyRead()),this,SLOT(processPendingDatagram()));
void processPendingDatagram() //處理等待的數據報 { while(receiver->hasPendingDatagrams()) //擁有等待的數據報 { QByteArray datagram; //擁於存放接收的數據報 datagram.resize(receiver->pendingDatagramSize()); receiver->readDatagram(datagram.data(),datagram.size()); unsigned short size = datagram.size(); unsigned char msg[10] = {0}; memcpy(msg, datagram.data(), size); qDebug()<<msg[0]<<msg[1]<<msg[2]<<msg[3]; } }
4.發送數據
receiver->writeDatagram((char*)msg,3, QHostAddress::Broadcast,45453);