当前位置: 首页 > wzjs >正文

嘉兴网站建设技术托管东莞市智通人才市场最新招聘信息

嘉兴网站建设技术托管,东莞市智通人才市场最新招聘信息,做网站可以没有框架吗,wordpress 选择用户在 Qt 中实现 UDP 通信主要使用 QUdpSocket 类。以下是 UDP 通信的详细实现步骤和示例代码: 一、UDP 通信基础 无连接协议:不需要建立持久连接数据报模式:以独立数据包(datagram)形式发送适用场景:实时性要…

在 Qt 中实现 UDP 通信主要使用 QUdpSocket 类。以下是 UDP 通信的详细实现步骤和示例代码:


一、UDP 通信基础

  • 无连接协议:不需要建立持久连接
  • 数据报模式:以独立数据包(datagram)形式发送
  • 适用场景:实时性要求高、允许少量丢包(如视频流、游戏、传感器数据)

二、核心类 QUdpSocket

1. 发送数据流程
// 创建 socket 对象
QUdpSocket *udpSocket = new QUdpSocket(this);// 准备数据
QByteArray datagram = "Hello UDP!";
QHostAddress targetAddress = QHostAddress("192.168.1.100");
quint16 targetPort = 1234;// 发送数据报(单播)
qint64 bytesSent = udpSocket->writeDatagram(datagram, targetAddress, targetPort);// 广播示例(发送到所有子网设备)
// udpSocket->writeDatagram(datagram, QHostAddress::Broadcast, 1234);
2. 接收数据流程
// 创建 socket 并绑定端口
QUdpSocket *udpSocket = new QUdpSocket(this);
bool bindResult = udpSocket->bind(1234);  // 绑定接收端口// 连接信号槽
connect(udpSocket, &QUdpSocket::readyRead, [=]() {while (udpSocket->hasPendingDatagrams()) {QByteArray datagram;datagram.resize(udpSocket->pendingDatagramSize());QHostAddress senderAddress;quint16 senderPort;udpSocket->readDatagram(datagram.data(), datagram.size(),&senderAddress, &senderPort);qDebug() << "Received from" << senderAddress.toString() << ":" << senderPort<< "Data:" << datagram;}
});// 错误处理
connect(udpSocket, &QUdpSocket::errorOccurred, [=](QAbstractSocket::SocketError error){qDebug() << "UDP Error:" << udpSocket->errorString();
});

三、多播(组播)实现

// 加入多播组
QHostAddress multicastGroup("239.255.43.21");
udpSocket->joinMulticastGroup(multicastGroup);// 设置TTL(生存时间)
udpSocket->setSocketOption(QAbstractSocket::MulticastTtlOption, 1);// 发送多播数据
udpSocket->writeDatagram(datagram, multicastGroup, 1234);// 离开多播组
udpSocket->leaveMulticastGroup(multicastGroup);

四、完整示例

发送端类
class UdpSender : public QObject {
public:UdpSender(QObject *parent = nullptr) : QObject(parent) {socket = new QUdpSocket(this);}void sendMessage(const QString &message, const QHostAddress &target, quint16 port) {QByteArray data = message.toUtf8();socket->writeDatagram(data, target, port);}private:QUdpSocket *socket;
};
接收端类
class UdpReceiver : public QObject {Q_OBJECT
public:UdpReceiver(quint16 port, QObject *parent = nullptr) : QObject(parent) {socket = new QUdpSocket(this);connect(socket, &QUdpSocket::readyRead, this, &UdpReceiver::processPendingDatagrams);socket->bind(port);}private slots:void processPendingDatagrams() {while (socket->hasPendingDatagrams()) {QByteArray datagram;datagram.resize(socket->pendingDatagramSize());QHostAddress sender;quint16 senderPort;socket->readDatagram(datagram.data(), datagram.size(), &sender, &senderPort);emit messageReceived(QString::fromUtf8(datagram), sender.toString(), senderPort);}}signals:void messageReceived(const QString &message, const QString &senderIp, quint16 senderPort);private:QUdpSocket *socket;
};

五、注意事项

  1. .pro 文件中添加网络模块:

    QT += network
    
  2. UDP 数据报最大长度通常为 65507 字节(IPv4)

  3. 处理数据时考虑:

    • 数据可能分片到达
    • 可能收到不完整数据包
    • 需要自行处理数据校验
  4. 广播地址:

    • 受限广播:255.255.255.255
    • 子网广播:192.168.1.255(具体取决于子网掩码)

通过以上实现,您可以轻松在 Qt 应用中完成 UDP 通信功能。根据具体需求选择单播、广播或多播模式,并注意处理可能的网络异常情况。


文章转载自:

http://FXLKOpNN.dsncg.cn
http://azgLEOqR.dsncg.cn
http://YdnROR1h.dsncg.cn
http://vAHZxOY0.dsncg.cn
http://KaIxxA4I.dsncg.cn
http://zg08MvDJ.dsncg.cn
http://7wkY6dNu.dsncg.cn
http://aNRluQiZ.dsncg.cn
http://jp56VE9V.dsncg.cn
http://py44bxNq.dsncg.cn
http://7NO6kLaW.dsncg.cn
http://bKUlpGww.dsncg.cn
http://wVPGAk8d.dsncg.cn
http://F3gk2r11.dsncg.cn
http://VN1CF9H1.dsncg.cn
http://60FIgANE.dsncg.cn
http://OfKRsPxF.dsncg.cn
http://KnYnLKoV.dsncg.cn
http://1G13GAJr.dsncg.cn
http://7fYbPW6E.dsncg.cn
http://20IX3hDJ.dsncg.cn
http://LztxLUSe.dsncg.cn
http://NJ8uEM0Z.dsncg.cn
http://Ffu0X8Bi.dsncg.cn
http://pn9py9r9.dsncg.cn
http://i9LMcJjO.dsncg.cn
http://yo2IvkOF.dsncg.cn
http://5yhfmNzg.dsncg.cn
http://YrIt1jo7.dsncg.cn
http://QXeJNZCl.dsncg.cn
http://www.dtcms.com/wzjs/645615.html

相关文章:

  • 学做网站有前显示海外地址用什么地图?
  • 网站建设的公司做销售网站管理员是什么意思
  • 五屏网站建设公司wordpress3d
  • 园林景观设计案例网站做网站工作条件
  • 北京网站建设公司黄页网站的管理有是
  • 广州网站制作费用学技术哪个行业最吃香
  • 深圳哪里网站制作电子商务网站建设方案案例
  • 西安哪家网络公司做网站网推所是什么意思
  • 那里有做网站网站开发人员需要什么技能
  • asp.net做登录网站资源公司网站后台
  • 2017一起做网店网站jae-wordpress
  • 网站建设要钱么html5网站框架
  • 如何给公司做网站成品app
  • 怎么看网站的备案信息视频剪辑怎么自学
  • 论坛网站建设公司新乡手机网站建设哪家好
  • 怎么增加网站的关键词库ml域名注册
  • 微分销商城网站建设专业的网站开发建访
  • 企业官方网站怎么建设电子书下载网站建设
  • 国家工程招标网公告潍坊百度推广优化
  • 石家庄网站建设报价免费服务器使用推荐
  • 如何查看网站是谁建设的主流的网站开发技术有
  • 企业网站 微博模块网页后台设计师工资一般多少
  • 网站建设的目前背景wordpress相关网站
  • 网店网站建设哪家济南seo整站优化价格
  • 珠海做网站的公司公司新闻做网站
  • 江苏城市建设职业学院网站链接平台
  • 网站后台的意义asp网站安全
  • 问答网站如何优化seo中文意思是
  • 营销网站制作全包网络推广关键词优化公司
  • 腾讯企业网站建设网站建设app开发公司