Qt-udp(组播)

这篇具有很好参考价值的文章主要介绍了Qt-udp(组播)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基本流程

Qt-udp(组播)
Qt-udp(组播)

简单聊天程序

#include "server.h"
#include <QApplication>
#include "client.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    server w;
    w.show();

    Client c;
    c.setWindowTitle("client");
    c.show();

    return a.exec();
}
#include "server.h"
#include "ui_server.h"

server::server(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::server)
{
    ui->setupUi(this);
    ui->sip_port->setText("8888");
    ui->cip_port->setText("9999");
    ui->cip_lineEdit->setText("127.0.0.1");
    udp1 = new QUdpSocket(this);

    udp1->bind(ui->sip_port->text().toInt());
    // send msg
    connect(ui->send, &QPushButton::clicked, this, [=](){
        udp1->writeDatagram(ui->msg->toPlainText().toUtf8(),QHostAddress(ui->cip_lineEdit->text()),ui->cip_port->text().toInt());
        ui->log->append("Me say: " + ui->msg->toPlainText());
        ui->msg->clear();
    });
    // read msg
    connect(udp1, &QUdpSocket::readyRead, this, [=](){
        qint64 size = udp1->pendingDatagramSize();
        QByteArray array(size,0);
        udp1->readDatagram(array.data(),size);
        ui->log->append(array);
    });
}

server::~server()
{
    delete ui;
}
#ifndef SERVER_H
#define SERVER_H

#include <QWidget>
#include <QUdpSocket>

namespace Ui {
class server;
}

class server : public QWidget
{
    Q_OBJECT

public:
    explicit server(QWidget *parent = 0);
    ~server();

private:
    Ui::server *ui;
    QUdpSocket* udp1;
};

#endif // SERVER_H
#include "client.h"
#include "ui_client.h"

Client::Client(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Client)
{
    ui->setupUi(this);
    ui->sip_port->setText("8888");
    ui->cip_port->setText("9999");
    ui->sip_lineEdit->setText("127.0.0.1");
    udp2 = new QUdpSocket(this);

    udp2->bind(ui->cip_port->text().toInt());
    // send msg
    connect(ui->send, &QPushButton::clicked, this, [=](){
        udp2->writeDatagram(ui->msg->toPlainText().toUtf8(),QHostAddress(ui->sip_lineEdit->text()),ui->sip_port->text().toInt());
        ui->log->append("Me say: " + ui->msg->toPlainText());
        ui->msg->clear();
    });
    // read msg
    connect(udp2, &QUdpSocket::readyRead, this, [=](){
        qint64 size = udp2->pendingDatagramSize();
        QByteArray array(size,0);
        udp2->readDatagram(array.data(),size);
        ui->log->append(array);
    });
}

Client::~Client()
{
    delete ui;
}
#ifndef CLIENT_H
#define CLIENT_H

#include <QWidget>
#include <QUdpSocket>
namespace Ui {
class Client;
}

class Client : public QWidget
{
    Q_OBJECT

public:
    explicit Client(QWidget *parent = 0);
    ~Client();

private:
    Ui::Client *ui;
    QUdpSocket* udp2;
};

#endif // CLIENT_H

组播

Qt-udp(组播)
#include "client.h"
#include "ui_client.h"

Client::Client(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Client)
{
    ui->setupUi(this);
    ui->sip_port->setText("8888");
    ui->cip_port->setText("9999");
    ui->sip_lineEdit->setText("127.0.0.1");
    udp2 = new QUdpSocket(this);

    // if you want to receive must bind port
    //udp2->bind(ui->cip_port->text().toInt());
    udp2->bind(QHostAddress::AnyIPv4,ui->cip_port->text().toInt());
    // 加入到组播的组中
    udp2->joinMulticastGroup(QHostAddress("244.0.0.10"));
    // send msg
    connect(ui->send, &QPushButton::clicked, this, [=](){
        udp2->writeDatagram(ui->msg->toPlainText().toUtf8(),QHostAddress(ui->sip_lineEdit->text()),ui->sip_port->text().toInt());
        ui->log->append("Me say: " + ui->msg->toPlainText());
        ui->msg->clear();
    });
    // read msg
    connect(udp2, &QUdpSocket::readyRead, this, [=](){
        qint64 size = udp2->pendingDatagramSize();
        QByteArray array(size,0);
        udp2->readDatagram(array.data(),size);
        ui->log->append(array);
    });
}

Client::~Client()
{
    delete ui;
}
#include "server.h"
#include "ui_server.h"

server::server(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::server)
{
    ui->setupUi(this);
    ui->sip_port->setText("8888");
    ui->cip_port->setText("9999");
    ui->cip_lineEdit->setText("127.0.0.1");
    udp1 = new QUdpSocket(this);

    udp1->bind(ui->sip_port->text().toInt());
    // send msg
    connect(ui->send, &QPushButton::clicked, this, [=](){
        udp1->writeDatagram(ui->msg->toPlainText().toUtf8(),QHostAddress("240.0.0.10"),ui->cip_port->text().toInt());
        ui->log->append("Me say: " + ui->msg->toPlainText());
        ui->msg->clear();
    });
    // read msg
    connect(udp1, &QUdpSocket::readyRead, this, [=](){
        qint64 size = udp1->pendingDatagramSize();
        QByteArray array(size,0);
        udp1->readDatagram(array.data(),size);
        ui->log->append(array);
    });
}

server::~server()
{
    delete ui;
}
#include "server.h"
#include "ui_server.h"

server::server(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::server)
{
    ui->setupUi(this);
    ui->sip_port->setText("8888");
    ui->cip_port->setText("9999");
    ui->cip_lineEdit->setText("127.0.0.1");
    udp1 = new QUdpSocket(this);

    udp1->bind(ui->sip_port->text().toInt());
    // send msg
    connect(ui->send, &QPushButton::clicked, this, [=](){
        udp1->writeDatagram(ui->msg->toPlainText().toUtf8(),QHostAddress("255.255.255.255"),ui->cip_port->text().toInt());
        ui->log->append("Me say: " + ui->msg->toPlainText());
        ui->msg->clear();
    });
    // read msg
    connect(udp1, &QUdpSocket::readyRead, this, [=](){
        qint64 size = udp1->pendingDatagramSize();
        QByteArray array(size,0);
        udp1->readDatagram(array.data(),size);
        ui->log->append(array);
    });
}

server::~server()
{
    delete ui;
}

文章来源地址https://www.toymoban.com/news/detail-504253.html

到了这里,关于Qt-udp(组播)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【嵌入式学习】网络通信基础-项目篇:简单UDP聊天室

    源码已在GitHub开源:0clock/LearnEmbed-projects/chat 客户端功能: 上线发送登录的用户名[yes] 发送消息和接收消息[yes] quit退出 服务器端功能: 统计用户上线信息,放入链表中[yes] 接收用户信息并给其他用户发送消息[yes] 服务器也支持给所有用户群发消息[yes] 接收下线提醒

    2024年01月25日
    浏览(64)
  • 小程序import及include引用的简单理解

    场景:在小程序中,WXML 提供两种文件引用方式 import 和 include         我自己记录下自己的一些简单理解 官方文档: 引用 | 微信开放文档  第一: import    import,就是可以引入自定义指定的template模板    比如:我在import页面中定义了一个name叫item的template模板        

    2024年02月08日
    浏览(34)
  • 【网络编程】利用套接字实现一个简单的网络通信(UDP实现聊天室 附上源码)

    源IP地址(Source IP Address): 源IP地址是数据包发送方(或数据流出发点)的唯一标识符。它用于在互联网或本地网络中定位发送数据包的设备或主机。源IP地址是数据包的出发点,即数据从这个地址开始传送,向目的IP地址指示的设备发送。 在TCP/IP协议中,源IP地址通常由发

    2024年02月14日
    浏览(86)
  • JavaCV音视频开发宝典:UDP局域网组播推流,多播推流,局域网多网段推流,使用UDP方式推送TS组播流,实现UDP一对多组播

    《JavaCV音视频开发宝典》专栏目录导航 《JavaCV音视频开发宝典》专栏介绍和目录 ​ 在之前文章中我们已经实现rtp点到点传输JavaCV音视频开发宝典:rtp点到点音视频传输(一对一音视频直播)和rtp广播JavaCV音视频开发宝典:rtp广播方式发送TS流音视频传输(一对多音视频会议

    2024年02月03日
    浏览(65)
  • UDP 多播(组播)

     前言(了解分类的IP地址) 1.组播(多播) 单播地址标识单个IP接口,广播地址标识某个子网的所有IP接口,多播地址标识一组IP接口。单播和广播是寻址方案的两个极端(要么单个要么全部),多播则意在两者之间提供一种这种方案。 多播数据报只应该由它感兴趣的接口接

    2024年02月11日
    浏览(32)
  • udp多点通信-广播-组播

    单播 每次只有两个实体相互通信,发送端和接收端都是唯一确定的。 主机之间的一对多的通信 所有的主机都可以接收到广播消息(不管你是否需要) 广播禁止穿过路由器(只能做局域网通信) 只有UDP可以广播 广播地址 有效网络号+全是1的主机号 192.168.50.123 -----》 192.168.5

    2024年02月05日
    浏览(38)
  • QT网络编程TCP/UDP开发流程 制作网络调试助手

    1、QT的网络编程: TCP和UDP TCP编程需要用到俩个类: QTcpServer 和 QTcpSocket QTcpSocket类 提供了一个TCP套接字 QTcpSocket是QAbstractSocket的一个子类,它允许您建立TCP连接和传输数据流 注意:TCP套接字不能在QIODevice::Unbuffered模式下打开。 QTcpServer类 提供一个基于tcp的服务器 2. 这个类可以接

    2023年04月08日
    浏览(45)
  • udp多播/组播那些事

    多播(multicast)和组播(groupcast)是相同的概念,用于描述在网络中一对多的通信方式。在网络通信中,单播(unicast)是一对一的通信方式,广播(broadcast)是一对所有的通信方式,而多播(或组播)是一对多的通信方式。 多播/组播通信允许一个发送者将数据包同时传输给

    2024年04月15日
    浏览(44)
  • 计算机网络 TCP/UDP程序开发网络聊天室

    TCP/UDP程序开发 开发TCP/UDP协议应用程序,掌握网络应用程序的工作原理。通过该实验,深入理解UDP和TCP协议的异同点,了解网络协议的工作过程,学会网络通信编程的基本方法,能够编制网络应用程序。 (1)了解和掌握“基于UDP-面向无连接的应用程序/基于TCP-面向连接的

    2024年02月05日
    浏览(89)
  • Netty接收UDP组播数据

    针对多网卡情况,绑定其中的一个网卡,接收UDP组播中的数据。

    2024年02月16日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包