相对于TCP/IP来说,UDP更像是发快递和写信,不需要判断和对方是否连通就可以发送,而TCP/IP必须确认连通之后才可以发送,这样UDP通讯其实不能严格按照TCP/IP的说法区分服务器和客户端,对于每一个客户端来说,只要知道对方地址和端口就可以直接发送,看是一个客户端身份,但是要想接受来自其它客户端发来的消息,就得绑定端口号,如果不绑定,只能发送信息,不能接收,这样看又是一个服务器身份。

  • 互相访问的效果如下:

  • 参考代码如下:

  客户端.h文件:

 #ifndef UDPSOCEKT_H
#define UDPSOCEKT_H #include <QWidget>
#include <QUdpSocket>
#include <QHostAddress>
#include <QString> namespace Ui {
class udpSocekt;
} class udpSocekt : public QWidget
{
Q_OBJECT public:
explicit udpSocekt(QWidget *parent = );
~udpSocekt(); private slots:
void on_sendbutton_clicked(); void on_closebutton_clicked(); void dealdata();
private:
Ui::udpSocekt *ui;
QUdpSocket *Udpsocket;
}; #endif // UDPSOCEKT_H

  客户端.CPP文件:

 #include "udpsocekt.h"
#include "ui_udpsocekt.h" udpSocekt::udpSocekt(QWidget *parent) :
QWidget(parent),
ui(new Ui::udpSocekt)
{
ui->setupUi(this);
setWindowTitle("客户端1:6666");
Udpsocket = new QUdpSocket(this);
//绑定端口(声明自己的端口)以便别人访问
Udpsocket->bind();
connect(Udpsocket,&QUdpSocket::readyRead,this,&udpSocekt::dealdata);
} udpSocekt::~udpSocekt()
{
delete ui;
}
void udpSocekt::dealdata()
{
char buf[] = {};//读取对方的内容长度
QHostAddress Addr;//对方地址
quint16 port;//对方端口
qint64 str = Udpsocket->readDatagram(buf,sizeof(buf),&Addr,&port);
if(str>)
{
//字符串组包
QString showData = QString("[%1:%2] %3").arg(Addr.toString()).arg(port).arg(buf);
ui->display->append(showData);
}
}
void udpSocekt::on_sendbutton_clicked()
{
//从输入框获取端口和访问的IP
QString ip = ui->ip->text();
quint16 port = ui->port->text().toInt();
QString text = ui->send->text(); //执行发送
Udpsocket->writeDatagram(text.toUtf8(),QHostAddress(ip),port); } void udpSocekt::on_closebutton_clicked()
{
Udpsocket->disconnectFromHost();
Udpsocket->close();
}

Socket之UDP的更多相关文章

  1. C#的Socket实现UDP协议通信

    今天稍花化了一点时间,利用C#的Socket验证了UDP的通信,为接下来特地利用UDP做个分布式的通信仿真系统打下基础.众所周知,UDP 就是用户数据报协议,在互联网参考模型的第四层——传输层.与TC ...

  2. Socket之UDP发送文件

    内容导航 一. Socket之UDP异步传输文件    二.Socket之UDP异步传输文件 三.Socket之UDP异步传输文件-多文件传输和文件MD5校验 四.Socket之UDP异步传输文件-用 ...

  3. 六、Socket之UDP异步传输文件-实现稳定的文件传输

    上一篇文章五.Socket之UDP异步传输文件-实现传输中取消传送中,还遗留了一个传输文件最大的问题,就是传输过程中丢包,这样在文件传输过程中就会卡住了,这篇文章就来解决文件传输中的丢包问题,实现稳定 ...

  4. 二、Socket之UDP异步传输文件

    上一篇文章一.Socket之UDP异步传输文件中,实现了文件的基本传输,但是传输过程中的信息是看不到的,这一篇是对上一篇进行了一些改进,并且可以了解传输的信息(加入了Log),还加入了接收或者拒绝接收 ...

  5. 三、Socket之UDP异步传输文件-多文件传输和文件MD5校验

    本文接着上一篇文章二.Socket之UDP异步传输文件,在上一篇文章的基础上实现多文件的传输和文件传输完成后进行完整性校验. 要实现多文件的传输,必须要对文(2)中发送文件的数据格式进行改进,必须加入 ...

  6. 四、Socket之UDP异步传输文件-用控件显示文件传输进度

    上一篇文章三.Socket之UDP异步传输文件中,实现了多文件的传输和MD5校验,还显示了文件传输过程中的信息,在这一篇文章中,将介绍怎样实现传输文件的进度显示和实现选择保存文件路径. 首先,来实现一 ...

  7. 五、Socket之UDP异步传输文件-实现传输中取消传送

    上一篇文章四.Socket之UDP异步传输文件中,只实现了传输开始前拒绝接收文件,没有实现文件传输进行的时候取消传送,这篇文章中我们就来介绍怎样实现这个功能. 在传输过程中取消文件的传送,有很多地方要 ...

  8. 【Socket编程】通过Socket实现UDP编程

    通过Socket实现UDP编程 UDP通信: 1.UDP协议(用户数据报协议)是无连接.不可靠.无序的. 2.UDP协议以数据报作为数据传输的载体. 3.使用UDP进行数据传输时,首先需要将要传输的数 ...

  9. JAVA之旅(三十二)——JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用

    JAVA之旅(三十二)--JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用 GUI写到一半电脑系统挂了,也就算了,最多GUI还有一个提示框和实例, ...

  10. python网络-Socket之udp编程(24)

    一.udp简介 udp --- 用户数据报协议,是一个无连接的简单的面向数据报的运输层协议. udp不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地. udp在 ...

随机推荐

  1. aliyun---ossutil

    上传文件: ossutil -c config cp -rf 源文件 oss://目标路径 config为存储key的文件 例子: ossutil -c config cp -rf /data/res ...

  2. Iperf 网络性能测试

    1.iperf安装 1.1将iperf_PC.rar工具解压放在默认的盘目录下即可,无需安装 1.2安装iperf for android 2.06.apk"到手机端. adb instal ...

  3. K8S集群入门:运行一个应用程序究竟需要多少集群?

    如果你使用Kubernetes作为应用程序的操作平台,那么你应该会遇到一些有关使用集群的方式的基本问题: 你应该有多少集群? 它们应该多大? 它们应该包含什么? 本文将深入讨论这些问题,并分析你所拥有 ...

  4. linux中文件处理命令

    目录 touch cat more less head tail touch 解释 命令名称:touch 命令所在路径:/bin/touch 执行权限:所有用户 功能描述:创建空文件 语法 touch ...

  5. C# 根据天、周、月汇总统计生成统计报表

    先看核心代码: public List<DataEntity> SearchShopSalesReport(DateTimeOffset? dateFrom, DateTimeOffset ...

  6. vue框架中props的typescript用法

    vue框架中props的typescript用法 在vue中使用typescript时,需要引入vue-property-decorator库来兼容格式. javascript写法 Vue.compo ...

  7. 回炉重造之重读Windows核心编程-003-内核对象

    内核对象是个比较难理解的概念,问题的根源就在于即使是<核心编程>书中也没有说清楚它的定义,只是不停地举例和描述它的性质,还有如何使用. 盲人摸象,难见全貌.只能尽可能列举它的性质,注意使用 ...

  8. VUE中使用XLSX实现导出excel表格

    简介 项目中经常会用导出数据的场景,这里介绍 VUE 中如何使用插件 xlsx 导出数据 安装 ## 1.使用 npm 或 yarn 安装依赖(三个依赖) npm install -S file-sa ...

  9. Eclipse 如何添加 更换字体(转载)

    1. 打开eclipse-->Window-->Preferences-->General-->appearance-->Colors and Fonts, 点开后选择B ...

  10. UESTC 1324 卿学姐与公主 分块板子

    #include<iostream> #include<cmath> using namespace std; ; //表示当前数在哪一块里面 int belong[maxn] ...