QT UDP网络编程实现简单消息传输

本文实例为大家分享了QT UDP实现简单消息传输的具体代码,供大家参考,具体内容如下

这几天看了下Qt的udp,顺便实现了下简单的消息传输,看起来比较简单。

UDP服务器:

截图如下:

代码:

server.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QUdpSocket>
#include<QtNetwork>
#include<QLabel>
#include<QPushButton>
#include<QLineEdit>
#include<QGridLayout>
#include<QTimer>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = 0);
    ~Widget();
protected:
    QTimer* timer;
    QImage* image;
private slots:
    void send();
    void bordcaststart();
private:
    QPushButton* start_ptn;
    QPushButton* close_ptn;
    QPushButton* send_ptn;
    QLabel* label;
    QLineEdit* edit;
    QLabel* image_label;
    QGridLayout* layout;
    QUdpSocket* udpsocket;
};

#endif // WIDGET_H

server.cpp

#include "widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    start_ptn=new QPushButton("start");
    close_ptn=new QPushButton("quit");
    send_ptn=new QPushButton("send");
    label=new QLabel;
    label->setText("this is test!");
    edit=new QLineEdit;
    layout=new QGridLayout(this);
    layout->addWidget(label);
    layout->addWidget(edit);
    layout->addWidget(send_ptn,1,1);
    layout->addWidget(start_ptn,2,0);
    layout->addWidget(close_ptn,2,1);
    this->resize(400,400);

    timer=new QTimer(this);
    udpsocket=new QUdpSocket(this);
    connect(start_ptn,SIGNAL(clicked(bool)),this,SLOT(bordcaststart()));
    connect(close_ptn,SIGNAL(clicked(bool)),this,SLOT(close()));
//    connect(timer,SIGNAL(timeout()),this,SLOT(send()));
}

Widget::~Widget()
{

}

void Widget::send()
{

    QByteArray datagram= "Broadcast message " +edit->text().toUtf8();
    udpsocket->writeDatagram(datagram.data(),datagram.size(),QHostAddress::Broadcast,45454);
}

void Widget::bordcaststart()
{
   // timer->start(1000);
    start_ptn->setDisabled(true);
    connect(send_ptn,SIGNAL(clicked(bool)),this,SLOT(send()));
}

客户端

截图:

client.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QUdpSocket>
#include<QtNetwork>
#include<QLabel>
#include<QTimer>
#include<QPushButton>
#include<QGridLayout>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = 0);
    ~Widget();
protected:

private:
    QGridLayout* layout;
    QPushButton* quit_ptn;
    QLabel* label;
    QUdpSocket* udpsocket;
private slots:
    void boarcast();
};

#endif // WIDGET_H

client.cpp

#include "widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    label=new QLabel;
    quit_ptn=new QPushButton("quit");

    layout=new QGridLayout(this);
    layout->addWidget(label);
    layout->addWidget(quit_ptn);
    this->resize(200,200);

    udpsocket=new QUdpSocket(this);
    udpsocket->bind(45454, QUdpSocket::ShareAddress);
    connect(udpsocket,SIGNAL(readyRead()),this,SLOT(boarcast()));
    connect(quit_ptn,SIGNAL(clicked(bool)),this,SLOT(close()));
}

Widget::~Widget()
{

}

void Widget::boarcast()
{
    while (udpsocket->hasPendingDatagrams()) {
            QByteArray datagram;
            datagram.resize(udpsocket->pendingDatagramSize());
            QHostAddress sender;
            quint16 senderPort;

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

            label->setText(datagram);
    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 基于QT制作一个简易的传输文件小工具

    最近因为一个事情很恼火,因为办公需要用到企业微信,但是企业微信只能在一个电脑上登陆,所以当别人发文件给你的时候,你只能一个电脑接收,创建共享文件夹也很麻烦,每次都需要去访问,很麻烦.所以准备自己写一个文件传输小工具. 功能就是能实现文件的双向传输,即客户端能传给服务端,服务端可以传给客户端. 使用的tcp通信,其实就是发消息,但是组合数据我是借鉴了IT1995大神写的代码. 先看下效果图 可以看到既可以接受文件也可进行发送文件,只要2台电脑在统一局域网内,就可发送和接受数据. 本地文件下出现了一

  • QT实现视频传输功能

    本文实例为大家分享了QT实现视频传输功能的具体代码,供大家参考,具体内容如下 前言 我们经常会进行视频的传输,这篇文章我们将讲解QT下的视频传输. 客户端 udp客户端,我们主要获取某个视频的文件,采用opencv读取后,分帧传输.我们将图片解码成base-64格式 参考代码 #include "ImageClient.h" #include<QDebug> #include<QBuffer> #include<QFileDialog> #inclu

  • QT基于TCP实现文件传输系统

    本文实例为大家分享了QT基于TCP实现文件传输系统的具体代码,供大家参考,具体内容如下 一.设计目标 1.发送端选择要传输的文件,进度条显示传输的进度,手动输入要传输的ip地址和端口号 2.接收到数据后显示接收进度,接收完毕后进度条自动消失 二.效果展示 三.实现过程 Qt文件传输发送端 1. 连接服务器 2. 当连接成功后会发送connected信号 3. 在槽函数中发送文件头信息 4. 当数据发送成功后会发送bytesWritten 5. 在槽函数中发送文件内容 UI布局 filesend.

  • QT UDP网络编程实现简单消息传输

    本文实例为大家分享了QT UDP实现简单消息传输的具体代码,供大家参考,具体内容如下 这几天看了下Qt的udp,顺便实现了下简单的消息传输,看起来比较简单. UDP服务器: 截图如下: 代码: server.h #ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include<QUdpSocket> #include<QtNetwork> #include<QLabel> #include<QP

  • C++基于socket UDP网络编程实现简单聊天室功能

    本文实例为大家分享了C++基于socket UDP实现简单聊天室功能的具体代码,供大家参考,具体内容如下 0.通信步骤流程图 (左:服务器:右:客户端:) 1.服务器代码 1.1服务器类头文件(CServer_UDP.h) #pragma once #include <winsock2.h> class CServer_UDP { public: CServer_UDP(); void SendMsg(const char sendBuf[]); void RecMsg(); ~CServer

  • C++ Socket实现TCP与UDP网络编程

    目录 前言 TCP 1). 服务器 2). 客户端 3). TCP聊天小项目 UDP 1). 服务器 2). 客户端 总结 前言 socket编程分为TCP和UDP两个模块,其中TCP是可靠的.安全的,常用于发送文件等,而UDP是不可靠的.不安全的,常用作视频通话等. 如下图: 头文件与库: #include <WinSock2.h> #pragma comment(lib, "ws2_32.lib") 准备工作: 创建工程后,首先右键工程,选择属性 然后选择 C/C++

  • Qt中网络编程的实现

    目录 一.tcp/IP协议簇与udp 1.TCP/IP协议族 2.udp 3.常用的通讯协议小结 二.Qt中的tcp(这里只展示代码) 1.tcpsever 2.tcpclient 三.QT中的Udp 由于我没有系统的分享一些简单的计算机网络有关的,下面只是简单讲讲tcp/ip协议簇和udp 一.tcp/IP协议簇与udp 1.TCP/IP协议族 TCP/IP实际上是一个协同工作的通信家族,为网络通信提供通路.为方便讨论TCP/IP协议族,大体上分为三部分: ①.Internet协议(IP).

  • Java网络编程实例——简单模拟在线聊天

    1.前提知识 需要知道简单的IO流操作,以及简单的UDP发送数据包的原理. 需要用到的类:DatagramSocket.DatagramPacket UDP数据包基于DatagramSocket发送和接收,DatagramPacket用于封装数据包 看下案例: 客户端发送消息: 正常情况下从控制台读信息,封装到DatagramPacket之中,再由DatagramSocket的send方法发出 读取到bye的时候退出聊天 public class UdpOnlineClient { public

  • Java网络编程之简单的服务端客户端应用实例

    本文实例讲述了Java网络编程之简单的服务端客户端应用.分享给大家供大家参考.具体如下: 在Java中,我们使用java.net.Socket及其相关类来完成有关网络的相关功能.Socket类非常简单易用,因为Java技术隐藏了建立网络连接和通过连接发送数据的复杂过程.下面所说的内容只适用于TCP协议. 一.连接到服务器 我们可以使用Socket类的构造函数来打开一个套接字,如 Socket sk = new Socket("210.0.235.14",13); 其中,210.0.23

  • 在Python下进行UDP网络编程的教程

    TCP是建立可靠连接,并且通信双方都可以以流的形式发送数据.相对TCP,UDP则是面向无连接的协议. 使用UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口号,就可以直接发数据包.但是,能不能到达就不知道了. 虽然用UDP传输数据不可靠,但它的优点是和TCP比,速度快,对于不要求可靠到达的数据,就可以使用UDP协议. 我们来看看如何通过UDP协议传输数据.和TCP类似,使用UDP的通信双方也分为客户端和服务器.服务器首先需要绑定端口: s = socket.socket(socket.

  • python之Socket网络编程详解

    什么是网络? 网络是由节点和连线构成,表示诸多对象及其相互联系.在数学上,网络是一种图,一般认为专指加权图.网络除了数学定义外,还有具体的物理含义,即网络是从某种相同类型的实际问题中抽象出来的模型.在计算机领域中,网络是信息传输.接收.共享的虚拟平台,通过它把各个点.面.体的信息联系到一起,从而实现这些资源的共享.网络是人类发展史来最重要的发明,提高了科技和人类社会的发展. 网络通信的三要素 IP地址 用来表示一台独立的主机 特殊的IP地址 127.0.0.1或称localhost(表示本地回环

  • 详解Java网络编程

    一.网络编程 1.1.概述 1.计算机网络是通过传输介质.通信设施和网络通信协议,把分散在不同地点的计算机设备互连起来,实现资源共享和数据传输的系统.网络编程就就是编写程序使联网的两个(或多个)设备(例如计算机)之间进行数据传输.Java语言对网络编程提供了良好的支持,通过其提供的接口我们可以很方便地进行网络编程. 2.Java是 Internet 上的语言,它从语言级上提供了对网络应用程 序的支持,程序员能够很容易开发常见的网络应用程序. 3.Java提供的网络类库,可以实现无痛的网络连接,联

  • Linux网络编程之socket文件传输示例

    本文所述示例程序是基于Linux平台的socket网络编程,实现文件传输功能.该示例是基于TCP流协议实现的socket网络文件传输程序.采用C语言编写.最终能够实现传输任何格式文件的文件传输程序. 具体实现代码如下: Server端代码如下: /************************************************************************* > File Name: Server.c > Author: SongLee ***********

随机推荐