qt网络编程二(udp版本)

庖丁解牛 庖丁解牛     2022-08-10     480

关键词:

QT的UdpSocket接收消息使用原则
第一步:new一个UdpSocket
第二步:调用UdpSocket的bind方法,同时指定端口号
第三步:使用connect将接收消息函数和UdpSocket对象做关联
第四步:在接受消息槽函数当中调用readDatagram接收消息

 

接收消息
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QUdpSocket>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = 0);
    ~Widget();
    void mydatasend();
private:
    QUdpSocket *udpsocket;
private slots:
    void mydatarecv();
};

#endif // WIDGET_H
#include "widget.h"
#include <QHostAddress>
#include <QMessageBox>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    udpsocket=new QUdpSocket(this);
    /*指定绑定端口号,接收消息必须绑定端口号,发送消息则不需要绑定*/
    udpsocket->bind(8080);
  /*取消绑定端口号使用:udpsocket->close()方法*/
/*readyRead()表示有消息到来这个信号*/ connect(udpsocket,SIGNAL(readyRead()),this,SLOT(mydatarecv())); } void Widget::mydatarecv() { char buf[1024]={0}; /*判断是否有消息*/ while(udpsocket->hasPendingDatagrams()) { udpsocket->readDatagram(buf,sizeof(buf)); QMessageBox::information(this,"消息",buf); memset(buf,0,sizeof(buf)); } } void Widget::mydatasend() { // } Widget::~Widget() { }

 

发送消息
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QUdpSocket>
#include <QPushButton>
#include <QLineEdit>
#include <QLabel>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = 0);
    ~Widget();
private:
    QUdpSocket *udpsocket;
    QPushButton *btn1;
    QLineEdit *edit1;
    QLineEdit *edit2;
    QLabel *label1;
    void mysenddata();
private slots:
    void btn_click();
};

#endif // WIDGET_H
#include "widget.h"
#include <QHostAddress>
#include <QGridLayout>
#include <QMessageBox>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    udpsocket=new QUdpSocket(this);
    btn1=new QPushButton(tr("点击"));
    edit1=new QLineEdit();
    edit2=new QLineEdit();
    label1=new QLabel(tr("目标IP"));
    QGridLayout *lay1=new QGridLayout(this);
    lay1->addWidget(btn1,1,1);
    lay1->addWidget(edit1,1,0);
    lay1->addWidget(edit2,0,1);
    lay1->addWidget(label1,0,0);
    connect(btn1,SIGNAL(clicked()),this,SLOT(btn_click()));
}

Widget::~Widget()
{

}

void Widget::btn_click()
{
    mysenddata();
}

void Widget::mysenddata()
{
    QString stext=edit1->text();
    QHostAddress *serverip=new QHostAddress();
    //获取目标IP地址
    QString ipstr=edit2->text();
    if(ipstr.isEmpty())
    {
        QMessageBox::critical(this,"错误信息","ip地址不可以为空!");
        return;
    }
    serverip->setAddress(ipstr);
    char buf[1024]={0};
    strncpy(buf,stext.toStdString().data(),sizeof(buf));
    udpsocket->writeDatagram(buf,strlen(buf),*serverip,8080);
    delete serverip;
    edit1->clear();
}

qt网络编程udp下c/s架构广播通信

QT有封装好的UDP协议的类,QUdpSocket,里面有我们想要的函数接口。感兴趣的话,可以看看。先搞服务端吧,写一个子类,继承QDialog类,起名为UdpServer类。头文件要引用我们上边说的QUdpSocket这个类,还有我们想要的布局的类。1#if... 查看详情

qt网络编程之搭建udp通信单播组播广播(代码片段)

由于项目的环境实在局域网内进行传输,所以采用了UDP通信。为此记录一下。UDP概念UDP(用户数据报协议)是一个简单的面向数据报的传输层协议。提供的是非面向连接的、不可靠的数据流传输。UDP不提供可靠性࿰... 查看详情

qt/c++——网络编程(代码片段)

...ff0c;老师说C++更简单,我们往下学学看。二、UDP网络编程这块要在工程文件中加上network服务器是被动套接字,客户端是主动套接字客户端:#ifndefWIDGET_H#defineWIDGET_H#include<QWidget>#include<QTextEdit>#include<QLin... 查看详情

卷二网络三—udp服务器与客户端

这是另一个类型的服务器/客户端,无连接的UDP:(UserDatagramProtocol)用户数据报协议参考:P58~P60 UDP时间戳服务器【时间戳就是ctime()显示的内容】1#coding:utf-823fromsocketimport*4fromtimeimportctime56#HOST:主机,变量为空表示可以使用任何可用... 查看详情

qttcp/udp网络协议入门实操udp通讯(代码片段)

...章请点击这里:    QTWidget学习笔记姊妹篇:    QtTCP/UDP网络协议入门实操(一)TCP通讯QtTCP/UDP网络协议入门实操(二)UDP通讯QtTCP/UDP网络协议入门实操&#x 查看详情

qttcp/udp网络协议入门实操udp通讯(代码片段)

...章请点击这里:    QTWidget学习笔记姊妹篇:    QtTCP/UDP网络协议入门实操(一)TCP通讯QtTCP/UDP网络协议入门实操(二)UDP通讯QtTCP/UDP网络协议入门实操(补充)此文只是最简单 查看详情

qttcp/udp网络协议入门实操udp通讯(代码片段)

...章请点击这里:    QTWidget学习笔记姊妹篇:    QtTCP/UDP网络协议入门实操(一)TCP通讯QtTCP/UDP网络协议入门实操(二)UDP通讯QtTCP/UDP网络协议入门实操(补充)此文只是最简单 查看详情

qt在windows下的udp通信(最简单)

qt编程:windows下的udp通信 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境:主机:win7开发环境:qt 功能:用udp进行收发通信 界面: 源代码:LssHost.pro: [cpp] viewplain copy #------------ 查看详情

qt5之udp通信(代码片段)

...在文件描述符上参数一:协议->IPv4/IPv6PF_INET/PF_INET6参数二:套接字类型->UDP无连接/TCP有连接SOCK_DGRAM/SOCK_STREAM参数三:申请套接字刷新套接字s为zero赋值:s.sin_family= 查看详情

java系列讲座二:socket网络通信实现聊天软件项目讲解(udp)

    上一篇我们讲了通过TCP方式实现网络通信软件开发的原理,思路及实现,今天跟大家谈谈Socket通信中UDP方式通信的软件开发步骤及主要代码讲解,UDP实现方式实现的通信软件特点是不分客户端与服务器端,一个... 查看详情

java系列讲座二:socket网络通信实现聊天软件项目讲解(udp)

    上一篇我们讲了通过TCP方式实现网络通信软件开发的原理,思路及实现,今天跟大家谈谈Socket通信中UDP方式通信的软件开发步骤及主要代码讲解,UDP实现方式实现的通信软件特点是不分客户端与服务器端,一个... 查看详情

qt之udp通信(代码片段)

...发送到在同一广播(也就是局域网内同一网段)网络上的每个主机注意:本地广播信息是不会被路由器转发,所以如果一个服务端在win& 查看详情

qt编写的项目作品19-图片及视频tcp/udp网络传输

一、功能特点多线程收发图片数据和解析图片数据,不卡主界面。同时支持TCP和UDP两种模式,封装了TCP模式以及UDP模式的客户端类和服务端类。图片传输客户端同时支持发送到多个服务端,可以作为一个教师机同屏发送到多个学... 查看详情

qt开源作品41-网络调试助手增强版v2022(代码片段)

一、前言做网络通信少不了网络收发数据,经常用到网络数据的调试相关工具,以便侦听数据用来判断数据是否正确,许久以前就发布过类似的工具,第一版大概在2013年,第二版大概在2017年,中间参考过... 查看详情

简单的服务器udp版本熟悉其api网络(代码片段)

前言:通过写一个简单的服务器来了解UDP的常用API目录UDP服务器程序UDP客户端程序客户端角度理解五元组总结面向数据报(发送接收数据,必须以一定的数据包为单位进行传输)使用传输层UDP协议UDP服务器程序对于一个服务... 查看详情

qttcp/udp网络协议入门实操tcp通讯(代码片段)

...章请点击这里:    QTWidget学习笔记姊妹篇:    QtTCP/UDP网络协议入门实操(一)TCP通讯QtTCP/UDP网络协议入门实操(二)UDP通讯QtTCP/UDP网络协议入门实操(补充)此文只是最简单 查看详情

qttcp/udp网络协议入门实操tcp通讯(代码片段)

...章请点击这里:    QTWidget学习笔记姊妹篇:    QtTCP/UDP网络协议入门实操(一)TCP通讯QtTCP/UDP网络协议入门实操(二)UDP通讯QtTCP/UDP网络协议入门实操(补充)此文只是最简单 查看详情

qtsocket网络通信

...讲解如何实现TCP和UDP的简单通信。socket简介在LINUX下进行网络编程,我们可以使用LINUX提供的统一的套接字接口。但是这种方法牵涉到太多的结构体,比如IP地址,端口转换等,不熟练的人往往容易犯这样那样的错误。QT中提供的S... 查看详情