16,212
社区成员
发帖
与我相关
我的任务
分享
#include<QNetworkInterface>
#include<QMessageBox>
#include<QHostInfo>
#include"wr.h"
Wr::Wr(QWidget *parent)
:QWidget(parent)
{
tem=new QLabel(tr("tem:"));
LineEdittem=new QLineEdit;
hum=new QLabel(tr("hum:"));
LineEdithum=new QLineEdit;
send=new QPushButton(tr("send"));
mainLayout=new QGridLayout(this);
mainLayout->addWidget(tem,0,0);
mainLayout->addWidget(LineEdittem,0,1);
mainLayout->addWidget(hum,1,0);
mainLayout->addWidget(LineEdithum,1,1);
mainLayout->addWidget(send,2,0,1,2);
setWindowTitle("Network");
connect(send,SIGNAL(clicked()),this,SLOT(sendm()));
//port=8000;
sender=new QUdpSocket(this);
receiver=new QUdpSocket(this);
//receiver->bind(8000,QUdpSocket::ShareAddress);
connect(receiver,SIGNAL(readyRead()),this,SLOT(readm()));
}
void Wr::sendm()
{
//char str[128]={0x01,0x04,0x00,0x00,0x00,0x02,0x71,0xcb};
QByteArray ba;
ba.resize(8);
ba[0]=0x01;
ba[1]=0x04;
ba[2]=0x00;
ba[3]=0x00;
ba[4]=0x00;
ba[5]=0x02;
ba[6]=0x71;
ba[7]=0xcb;
qint64 len;
QHostAddress adr=QHostAddress("192.168.1.33");
//len=udpsocket->writeDatagram(str,32,adr,port);
len=sender->writeDatagram(ba,adr,8000);
if(len==-1)
{
QMessageBox::information(this,tr("error"),tr("writedatagram failed!"));
return;
}
qDebug()<<"yes"<<len;
}
void Wr::readm()
{
while(receiver->hasPendingDatagrams())
{
qDebug()<<"hasPendingDatagrams";
QByteArray datagram;
qint64 rlen;
datagram.resize(receiver->pendingDatagramSize());
QHostAddress sendip;
quint16 senderPort;
rlen=receiver->readDatagram(datagram.data(),datagram.size(),&sendip,&senderPort);
//qDebug()<<datagram.data()<<datagram.size()<<senderPort<<sender.toString();
if(rlen==-1)
{
QMessageBox::information(this,tr("error"),tr("readdatagram failed!"));
return;
}
qDebug()<<datagram.data()<<datagram.size()<<senderPort<<sendip.toString();
}
}