51 lines
1.3 KiB
C++
51 lines
1.3 KiB
C++
#include "udpsender.h"
|
|
|
|
udpSender::udpSender(QObject *parent)
|
|
: QObject{parent}
|
|
{
|
|
UdpSocket=new QUdpSocket();
|
|
UdpSocket->bind(port_receive);
|
|
connect(UdpSocket, &QUdpSocket::readyRead,this, &udpSender::readPendingDatagrams);
|
|
QEventLoop Loop;
|
|
}
|
|
|
|
void udpSender::GetLocalIP()
|
|
{
|
|
QString hostName=QHostInfo::localHostName();
|
|
qDebug()<<hostName;
|
|
QHostInfo hostInfo=QHostInfo::fromName(hostName);
|
|
QString localIP="";
|
|
QList<QHostAddress> addList=hostInfo.addresses();
|
|
|
|
foreach (QHostAddress aHost,addList)
|
|
{
|
|
if(QAbstractSocket::IPv4Protocol==aHost.protocol())
|
|
{
|
|
localIP=aHost.toString();
|
|
qDebug()<<localIP;
|
|
}
|
|
}
|
|
}
|
|
|
|
int udpSender::SendUDP(QString ID)
|
|
{
|
|
qDebug()<<QHostAddress::Broadcast;
|
|
UdpSocket->writeDatagram(ID.toUtf8(),QHostAddress::Broadcast,port_send);
|
|
return 1;
|
|
}
|
|
|
|
void udpSender::readPendingDatagrams()
|
|
{
|
|
qDebug()<<"Read";
|
|
QByteArray datagram;
|
|
datagram.resize(UdpSocket->pendingDatagramSize());
|
|
|
|
QHostAddress peerAddr;
|
|
quint16 peerPort;
|
|
UdpSocket->readDatagram(datagram.data(),datagram.size(),&peerAddr,&peerPort);
|
|
QString str=datagram.data();
|
|
|
|
QString peer="[From "+peerAddr.toString()+":"+QString::number(peerPort)+"] ";
|
|
qDebug()<<peer+str;
|
|
}
|