qt 组播

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QThread>

#define UDP_PORT1   31002

QHostAddress MulticastGroup = QHostAddress("239.192.1.1");

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    setWindowTitle("udp test");

    udp10002 = new QUdpSocket(this);
    udp10002->bind(QHostAddress::AnyIPv4, UDP_PORT1,QAbstractSocket::ShareAddress);
    udp10002->joinMulticastGroup(MulticastGroup);
    udp10002->setSocketOption( udp10002->MulticastLoopbackOption,0);

    connect(udp10002, SIGNAL(readyRead()), this, SLOT(readPendingDatagrams10002()));
}

void MainWindow::resizeEvent(QResizeEvent *)
{
    ui->horizontalLayoutWidget->resize(this->width(),this->height());
}

MainWindow::~MainWindow()
{
    delete ui;

    udp10002->close();
    qDebug()<<"close " <<UDP_PORT1;
    udp10002->leaveMulticastGroup(MulticastGroup);
}
void MainWindow::readPendingDatagrams10002()
{
    while (udp10002->hasPendingDatagrams())
    {
        QByteArray datagram;
        datagram.resize(udp10002->pendingDatagramSize());
        QHostAddress sender;
        quint16 senderPort;

        udp10002->readDatagram(datagram.data(), datagram.size(), &sender, &senderPort);

         qDebug()<<"read:"<<sender<<senderPort<<datagram;
        udp10002->writeDatagram("HHHHHHHHHHHHHHH",sender,senderPort);
        udp10002->writeDatagram("HHHHHHHHHHHHHHH",MulticastGroup,31003);
    }
}
时间: 2024-10-06 04:06:30

qt 组播的相关文章

QT的UDP组播技术

一 UDP介绍 UDP是一种简单轻量级的传输层协议,提供无连接的,不可靠的报文传输.适合下面4种情况: 网络数据大多为短消息. 拥有大量客户端. 对数据安全性无特殊要求 网络负担非常重,但对响应速度要求高. 二 基于udp协议的c/s编程模型(广播),组播的话,明天再看. 客户端: class Sender : public QObject { Q_OBJECT //可以使用信号和槽 public: explicit Sender(QObject *parent = 0); ~Sender();

QT Udp组播(穿透)

http://blog.csdn.net/victoryknight/article/details/7814243 主题 UDPQt路由器 局域网内的两台机器如果隔有路由器,那么这两台机器之间不能进行广播通信,但是我们可以换成组播的通信的方式,达到相互通信的效果. 一 服务器端 QUdpSocket udp_socket; udp_socket.bind(QHostAddress::Any, udp_listen_port, QUdpSocket::ReuseAddressHint); QHo

java组播MulticastSocket

在单播模式中有服务器端和客户端之分,而组播模式与单播模式不同,每个端都是以路由器或交换机做为中转广播站,任意一端向路由器或交换机发送消息,路由或交换机负责发送其他节点,每个节点都是同等的.所以在编程模式上用同一个类表示即可--MulticastSocket. MulticastSocket属于jdk提供的类,类路径为java.net.MulticastSocket,利用此类可以很方便地实现组播功能,下面展示一个简单例子,两个节点之间通过组播传输消息. ①节点一,指定组播地址为228.0.0.4,

单播、多播(组播)和广播的区别

单播.多播和广播单播"(Unicast)."多播"(Multicast)和"广播"(Broadcast)这三个术语都是用来描述网络节点之间通讯方式的术语.那么这些术语究竟是什么意思?区别何在? 1.单播:网络节点之间的通信就好像是人们之间的对话一样.如果一个人对另外一个人说话,那么用网络技术的术语来描述就是"单播",此时信息的接收和传递只在两个节点之间进行.单播在网络中得到了广泛的应用,网络上绝大部分的数据都是以单播的形式传输的,只是一

学习组播原理笔记

广播的缺点:被路由隔离.不可跨网段.浪费流量和硬件资源OSPF建立邻居:单播:太麻烦  广播:浪费资源  组播:IGP 组播的优势:1.组的概念2.发送数据合理利用带宽资源.减少发送者的CPU资源消耗3.不知道接收者的地址4.实时性 基于UDP(数据层面)TCP  头部20Byte  重传机制 UDP  头部8Byte       1.速度快RTP实时传输协议:UDP报文是无序.通过RTP来控制UDP的无序性 多播协议:PIM(协议无关的多播)组播地址:224.0.0.13发送hello包的组播

UDP 组播/多播实现步骤

UDP组播 实现服务器对客户端分组播放(发送数据). 实现步骤: server.c 1.创建服务器套接字 #include <sys/types.h> #include <sys/socket.h> int socket(int domain, int type, int protocol);   返回套接字 2.构建服务器地址结构 struct sockaddr_in serveraddr; #include <strings.h> bzero(&server

组播实验

说明:做组播实验需要安装VLC Media Player 实验步骤: 步骤一:按照实验拓扑搭建实验环境 步骤二:配置SERVER 步骤三:配置AR1 <AR1>sys Enter system view, return user view with Ctrl+Z. [AR1]multicast routing-enable [AR1]int g0/0/0 [AR1-GigabitEthernet0/0/0]ip add 1.1.1.2 255.255.255.252 May  2 2016 1

Android开发:组播(多播)与广播

近期由于需要编写能够使同一局域网中的Android客户端与PC端进行自动匹配通信功能的程序,学习并试验了JAVA组播与广播的内容,记录一些理解如下: 一.组播(多播)背景知识:组播使用UDP对一定范围内的地址发送相同的一组Packet,即一次可以向多个接受者发出信息,其与单播的主要区别是地址的形式.IP协议分配了一定范围的地址空间给多播(多播只能使用这个范围内的IP),IPv4中组播地址范围为224.0.0.0到239.255.255.255.JAVA编程:java中通过MulticastSoc

[转]IP_ADD_MEMBERSHIP : 组播错误 的解决方法:

http://www.cnitblog.com/dvb-dvb/archive/2012/10/15/aa.html by default live library includes winsock.h through windows.h instead of winsock2.h, but requires Winsock 2 in  initializeWinsockIfNecessary(...) function.IP_ADD_MEMBERSHIP value for Winsock1