//udprecv-------------------------------------------------------------------------------------------------------------------------------------------------------------
Udprecv::Udprecv()
{
mSocket = new QUdpSocket();
mSocket->bind(QHostAddress::LocalHost,10086);
connect(mSocket,SIGNAL(readyRead()),this,SLOT(read_data()));
}
方式一
void Udprecv::read_data()
{
QHostAddress address;
quint16 port;
array.resize(mSocket->bytesAvailable());//根据可读数据来设置空间大小
mSocket->readDatagram(array.data(),array.size(),&address,&port);
//读取数据readDatagram ( char * data, qint64 maxSize, QHostAddress * address = 0, quint16 * port = 0 )
emit send_data(array); //QByteArray& QByteArray array;
}
方式二
void Udprecv::read_data()
{
while(mSocket->hasPendingDatagrams())
{
//array.clear();
array.resize(mSocket->pendingDatagramSize());
mSocket->readDatagram(array.data(), array.size());
emit send_data(array);
}
return;
}
//config-------------------------------------------------------------------------------------------------------------------------------------------------------------
Udprecv* m_udp;
connect(m_udp,SIGNAL(send_data(QByteArray&)),this,SLOT(displayUdp(QByteArray& )));//运行报错 原因是之前m_udp没有new,只是单纯声明
void config::displayUdp(QByteArray& array)
{
#ifdef WIN32
ui.udpLogTextEdit->append(array);
#else
ui.udpLogTextEdit->append(UtfToGbk(array));
#endif
return;
}
---------------------------------------------------------------------------------------------------------------------------------------------