在局域网的开发过程中,有时候会用到通过UDP广播去发现网段内的网段,可以采取这种方式:
_BroadcastSock = new QUdpSocket(this);
_BroadcastSock->bind(9090);
connect(_BroadcastSock,SIGNAL(readyRead()),this,SLOT(OnBroadcaseReceive()));
QByteArray cmd("GETIP");
cmd.push_back(0x0D);
cmd.push_back(0x0A);
if(_BroadcastSock->writeDatagram(cmd,cmd.length(),QHostAddress::Broadcast,9090) \
!=cmd.length())
{
QMessageBox::warning(this,tr("警告"),tr("网络错误"),0,0);
return;
}
绑定了端口后,当网段内其他IP在此端口发送数据,并且收到的时候,都会在OnBroadcaseReceive()槽函数中处理。
void smartclass::OnBroadcaseReceive()
{
QHostAddress addr;
quint16 port;
while (_BroadcastSock->hasPendingDatagrams()) {
QByteArray datagram;
datagram.resize(_BroadcastSock->pendingDatagramSize());
_BroadcastSock->readDatagram(datagram.data(), datagram.size(),&addr, &a

本文介绍在局域网开发中如何利用Qt框架通过UDP广播来探测同一网段内的设备。通过特定的UDP协议实现网关发现。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



