QT在局域网进行UDP通信的若干坑

本文介绍使用QT进行局域网UDP通信时的常见问题及解决策略,包括网络配置错误、防火墙限制、网卡不匹配及物理连接问题等,确保通信稳定可靠。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QT进行局域网通信,接收端可以采用的代码:
receiver = new QUdpSocket(this);
//绑定,第一个参数为端口号,第二儿表示允许其它地址链接该广播 receiver->bind(Server_PORT,QUdpSocket::ShareAddress); //readyRead:每当有数据报来时发送这个信号 connect(receiver,SIGNAL(readyRead()),this,SLOT(processPengingDatagram()));
发送端可以采用的代码:
sender->writeDatagram(datagram.data(),datagram.size(),QHostAddress::Broadcast,Server_PORT);
以上代码发送和接收数据的配置选项如发送QUdpSocket::ShareAddress,接收QHostAddress::Broadcas做适当改变一般不会影响通信。

但是当我们通过各种办法印证我们的代码写的没有问题的时候,却发现局域网中的A机器和B机器无法进行通信。那怎么办呢?个人认为至少有以下几种可能:
1、主机网络配置。如果发现ip和端口号配的不对,当然无法进行UDP的通信。
2、主机防火墙和其他网络限制的配置尤其是防火墙。防火墙的UDP限制需要关闭(最简单的方法就是直接将防火墙全关)。如果关完防火墙UDP能正常通信了,那其他的限制软件如360就不需要关了。
3、网卡匹配。如果发现A机器和B机器一个用的是千兆网卡,一个用的是百兆网卡,有可能会出问题。
4、物理问题。比如网线坏了之类的物理连接问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值