网络编程-UDP协议(发送数据和接收数据)

news2024/11/24 12:03:34

需要了解TCP协议的,可以看往期文章
https://blog.csdn.net/weixin_43860634/article/details/133274701

TCP/IP参考模型

通过此图,可以了解UDP所在哪一层级中
在这里插入图片描述

代码案例

发送数据

package com.hidata.devops.paas.udp;

import java.io.IOException;
import java.net.*;

/**
 * @Description : UDP通信程序(发送数据)
 * @Date: 2023-09-25 14:34
 */
public class SendMessageDemo {
    public static void main(String[] args) throws IOException {
        //发送数据

        //1、创建DatagramSocket对象(快递公司)
        DatagramSocket datagramSocket = new DatagramSocket();

        //2、打包数据
        String str = "你好";
        byte[] bytes = str.getBytes();
        InetAddress address = InetAddress.getByName("127.0.0.1");
        int port = 5000;
        DatagramPacket p = new DatagramPacket(bytes,bytes.length,address,port);

        //3、发送数据
        datagramSocket.send(p);

        //4、释放资源
        datagramSocket.close();
    }
}

接收数据

package com.hidata.devops.paas.udp;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

/**
 * @Description : UDP通信程序(接收数据)
 * @Date: 2023-09-25 14:34
 */
public class ReceiveMessageDemo {
    public static void main(String[] args) throws IOException {
        //接收数据

        //1、创建DatagramSocket对象(快递公司)
        DatagramSocket datagramSocket = new DatagramSocket(5000);

        //2、接收数据包
        byte[] bytes = new byte[1024];
        DatagramPacket p = new DatagramPacket(bytes,bytes.length);

        System.out.println("111");
        datagramSocket.receive(p);
        System.out.println("222");

        //3、解析数据包
        byte[] data = p.getData();
        int len = p.getLength();
        InetAddress address = p.getAddress();
        int port = p.getPort();

        System.out.println("接收到的数据:" + new String(data,0,len));

        System.out.println("该数据是从" + address + "这台电脑中的 " + port + "这个端口发出的");
        //4、释放资源
        datagramSocket.close();
    }
}

运行效果

111
222
接收到的数据:你好
该数据是从/127.0.0.1这台电脑中的 57057这个端口发出的

Process finished with exit code 0

在这里插入图片描述

额外补充

  • 1、UDP是面向无连接通信协议(通俗一点讲,就是不管是否已连接成功,直接发送数据),该特性正好与TCP协议相反,TCP协议是面向连接的通信协议,要先确保连接成功,才会发数据
  • 2、UDP协议传输的 速度快,有大小限制一次最多发送64k,数据不安全,易丢失
  • 3、UDP适用场景:语音通话,网络会议,视频通话等领域,对数据部分丢失,要求不是严格

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1040894.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图形处理软件Photoshop Elements 2020 mac中文版 ps简化版

Photoshop Elements 2020 mac是一款非常实用的图形处理工具。ps elements 2020 mac中文版可以帮助您自动生成照片和视频作品的功能,采用Adobe Sensei AI技术可进行图像组织、编辑和创建等。Photoshop Elements 2020 for Mac激活版可以帮助您轻松整理照片和视频&…

【springboot3.x 记录】关于Jakarta包无法引入的问题

最近想将一些项目升级到springboot3.x和java17的时候,发现项目依赖中有Jakarta的包,但是代码标红提示没有相关的类,特此记录一下排查问题和最终解决问题的思路方法 一、发现问题 因为之前有创建过 springboot3.x java17 的项目,…

php导出cvs,excel打开数字超过16变科学计数法

今天使用php导出cvs,在excel中打开,某一个字段是数字,长度高于16位结果就显示科学计数法 超过15位的话从第16位开始就用0代替了 查询了半天总算解决了就是在后面加上"\t" $data[$key][1] " ".$value[1]."\t";…

法规标准-UN R48标准解读

UN R48是做什么的? UN R48全名为关于安装照明和灯光标志装置的车辆认证的统一规定,主要描述了对各类灯具的布置要求及性能要求;其中涉及自动驾驶功能的仅有6.25章节【后方碰撞预警信号】,因此本文仅对此章节进行解读 功能要求 …

Mysql编译安装和yum安装

一、msql数据库介绍 1、什么是sql sql代表结构化查询语言,sql是用于访问数据库的标椎化语言 sql包含三个部分 DDL数据定义语言包含定义数据库及其对象的语言,例如表,视图,触发器,存储过程等 DML数据操作语言包含允许数…

windows 修改hosts映射,可以ping通,但是无法通过http url 路径访问,出现 500 Internal Privoxy Error

问题描述 今天在学习nginx时,想在hosts配置一个nginx的域名映射,但是发现访问nginx服务的ip时可以访问通,在dos命令窗口ping配置的域名映射也可以ping通,但是一旦在浏览器通过http请求访问配置的hosts域名映射时却出现 500 Inter…

学习:原码-反码-补码

文章目录 前提知识原码详解反码补码 二进制负数的运算 前提知识 正数不需要进行原码反码补码一说,正数就是正数,我们原码反码补码是为了针对负数 (按道理来说其实根本不存在什么码,只有二进制机器码,不过是为了方便计…

【Java 基础篇】Java 实现模拟斗地主游戏

欢迎阅读本篇博客,在这篇博客中,我们将详细讲解如何使用Java编写一个简单的模拟斗地主游戏。这个项目将帮助您了解Java编程中的一些基本概念,如面向对象编程、集合框架的使用、随机数生成等。 引言 斗地主是一种非常受欢迎的纸牌游戏&#…

单日 5000 亿行 / 900G 数据接入,TDengine 3.0 在中国地震台网中心的大型应用

小T导读:为满足地震预警数据存储、检索和处理的建设与集成需求,以及响应国家国产软件自主可控的号召,中国地震台网中心决定选用国产数据库 TDengine 来存储和处理地震波形数据。本文将针对 TDengine 3.0 在地震领域的应用展开详细讲解。 关于…

计算机竞赛 深度学习交通车辆流量分析 - 目标检测与跟踪 - python opencv

文章目录 0 前言1 课题背景2 实现效果3 DeepSORT车辆跟踪3.1 Deep SORT多目标跟踪算法3.2 算法流程 4 YOLOV5算法4.1 网络架构图4.2 输入端4.3 基准网络4.4 Neck网络4.5 Head输出层 5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 *…

[Linux入门]---进程状态

文章目录 1.进程主要状态进程运行状态进程阻塞状态进程的挂起状态 2.Linux进程状态Linux进程内核源代码①R运行状态②S睡眠状态③D磁盘休眠状态T停止状态④X死亡状态⑤Z僵尸状态⑥孤儿进程 3.总结 1.进程主要状态 进程运行状态 ①内存中有一个运行队列,其中有两个指…

ElementUI实现登录注册啊,axios全局配置,CORS跨域

一,项目搭建 认识ElementUI ElementUI是一个基于Vue.js 2.0的桌面端组件库,它提供了一套丰富的UI组件,包括表格、表单、弹框、按钮、菜单等常用组件,具备易用、美观、高效、灵活等优势,能够极大的提高Web应用的开发效…

今天聊一聊高性能系统架构设计是什么样的

Java全能学习面试指南:https://javaxiaobear.cn 今天聊一聊大家常听到的高性能系统架构。 高性能系统架构,主要包括两部分内容,性能测试与性能优化。性能优化又可以细分为硬件优化、中间件优化、架构优化及代码优化,知识架构图如…

arcgis搭建离线地图服务WMTS

Arcgis搭建离线地图服务WMTS 发布时间:2021-03-04 版权: ARCGIS搭建离线地图服务器,进行离线地图二次开发 2. 离线地图服务发布(WMTS服务) (详细教程:卫星地图_高清卫星地图_地图编辑_离线地…

Python爬虫实战:根据关键字爬取某度图片批量下载到本地

本文主要介绍如何使用Python爬虫根据关键字爬取某度图片批量下载到本地,并且加入代理IP的使用,绕过反爬措施,提高程序的可用性和稳定性。文章包含了代码实现和详细解释,适合于初学者学习。 目录 前言 准备工作 Requests库 Bea…

微信小程序,动态设置三级联动, 省市区街道

1.第一步 传parentId0 查询省份 2.第二步 选择省份,传pathId选择省份的pathId, 不传parentId,会查询出 市/县数据 3.第三步 根据选择县的parentId 查询街道数据,传parentId选择的县id 4.选择结果回显 显示所选择的 path 以/分割 取最后一级<van-dropdown-menu…

零基础教程:Yolov5模型改进-添加13种注意力机制

1.准备工作 先给出13种注意力机制的下载地址&#xff1a; https://github.com/z1069614715/objectdetection_script 2.加入注意力机制 1.以添加SimAM注意力机制为例&#xff08;不需要接收通道数的注意力机制&#xff09; 1.在models文件下新建py文件&#xff0c;取名叫Sim…

数据链路层协议

文章目录 数据链路层协议0. 数据链路层解决的问题1. 以太网协议(1) 认识以太网(2) 以太网帧格式<1> 两个核心问题 (3) 认识MAC地址(4) 局域网通信原理(5) MTU<1> 认识MTU<2> MTU对IP协议的影响<3> MTU对UDP协议的影响<4> MTU对TCP协议的影响<…

R语言中更改R包安装路径

看到这些包下载到我的C盘&#xff0c;我蛮不爽的&#xff1a; 所以决定毫不犹豫的改到D盘&#xff1a; 首先&#xff0c;我们需要在RStudio中新建一个初始启动文件&#xff1a; file.edit(~/.Rprofile) 然后去你喜欢的环境新建一个文件夹存放安装的包的位置&#xff0c;我喜欢…

第三章 图标辅助元素的定制

第三章 图标辅助元素的定制 1.认识图表常用的辅助元素 ​ 图表的辅助元素是指除了根据数据绘制的图形之外的元素&#xff0c;常用的辅助元素包括坐标轴、标题、图例、网格、参考线、参考区域、注释文本和表格&#xff0c;它们都可以对图形进行补充说明。 ​ 上图中图表常用辅…