Qt UDP发现网关实现
2014-09-18 11:09
686 查看
在局域网的开发过程中,有时候会用到通过UDP广播去发现网段内的网段,可以采取这种方式:
绑定了端口后,当网段内其他IP在此端口发送数据,并且收到的时候,都会在OnBroadcaseReceive()槽函数中处理。
在这里获取数据的 时候,同时把数据源的ip和端口都获取了。QHostAddressaddr;quint16port;
具体协议如何实现,楼主是在
_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, &port); QString ipStr(datagram); BroadMsgHandle(addr,port,ipStr); return; } }
在这里获取数据的 时候,同时把数据源的ip和端口都获取了。QHostAddressaddr;quint16port;
具体协议如何实现,楼主是在
BroadMsgHandle(addr,port,ipStr);中实现的。
相关文章推荐
- Fedora14 基于Qt的UDP传输文字聊天小软件实现 (Qt查询本地Ip、Qt本地时间显示、传输中文汉字实现、Qt的textedit自动滚屏实现、给QPushButton设键盘快捷实现)---续上
- 基于Qt的UDP传输文字聊天小软件实现
- Qt实现UDP广播简例
- [QT]局域网内机器的自发现实现
- 10 qt udp编程和网络聊天室的实现
- QT:UDP网络编程实现
- 关于Qt移植后环境变量的设置 qt移植到arm中文显示问题解决 实现pc与tiny210 arm开发板 udp通信
- Qt通过UDP传图片,实现自定义分包和组包
- Qt-----实现Udp通信
- Qt通过UDP传图片,实现自定义分包和组包
- qt实现串口,UDP,TCP与嵌入式通信上位机软件
- 关于Qt移植后环境变量的设置 qt移植到arm中文显示问题解决 实现pc与tiny210 arm开发板 udp通信(续上)
- QT实现局域网聊天工具(带UDP文件传输)
- QT使用WOL实现远程一键开机(局域网,需要目标电脑的主板支持,并且插上网线,用udpSocket.writeDatagram一句话就可以)
- Qt套接字实现UDP通信
- Qt中udp实现中文字符串的传输
- Qt实现UDP通信简例
- 【Qt点滴】UDP协议实例:简易广播实现
- 局域网发现设备代码实现:udp组播
- linux下基于Qt的udp协议 pc机与Tiny210(arm板子)互相发送文字信息的实现 记录(1)