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

news/2025/3/15 22:30:33/

需要了解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.ppmy.cn/news/1124889.html

相关文章

【Ubuntu18.04】Autoware.ai安装

Autoware.ai安装 引言1 ROS安装2 Ubuntu18.04安装Qt5.14.23 安装GCC、G4 Autoware.ai-1.14.0安装与编译4.1 源码的编译4.1.1 python2.7环境4.1,2 针对Ubuntu 18.04 / Melodic的依赖包安装4.1.3 先安装一些缺的ros依赖4.1.4 安装eigen3.3.74.1.5 安装opencv 3.4.164.1.6 编译 4.…

[每周一更]-(第64期):Dockerfile构造php定制化镜像

利用php官网镜像php:7.3-fpm,会存在部分插件缺失的情况,自行搭建可适用业务的镜像,才是真理 Dockerhub 上 PHP 官方基础镜像主要分为三个分支: cli: 没有开启 CGI 也就是说不能运行fpm。只可以运行命令行。fpm: 开启了CGI&#x…

CSS笔记——css阿里图标、iframe内联框架

一、css阿里图标 阿里矢量图标库:https://www.iconfont.cn/ 要在网页中使用阿里图标,需要先在阿里图标库中选择所需的图标,然后引入相应的 CSS 文件。 以下是具体的引入方式: 在阿里图标库中选择所需的图标,点击右…

C/S架构学习之TCP服务器

TCP服务器的实现流程:一、创建套接字(socket函数):通信域选择IPV4网络协议、套接字类型选择流式; int sockfd socket(AF_INET,SOCK_STREAM,0); //通信域选择IPV4、套接字类型选择流式二、填充服务器的网络信息结构体&…

指针笔试题讲解

文章目录 题目答案与解析1、234、5、6、7、8、 题目 int main() {int a[5] { 1, 2, 3, 4, 5 };int *ptr (int *)(&a 1);printf( "%d,%d", *(a 1), *(ptr - 1));return 0; }//由于还没学习结构体,这里告知结构体的大小是20个字节 //由于还没学习结…

后端大厂面试-15道题

1. 说说计算机存储结构 计算机存储结构通常包括这几个层次: 主存储器(Main Memory):也称为内存(RAM,Random Access Memory),主要用于存储当前正在执行的程序和数据。它是计算机中最…

MySQL数据类型之JSON

MySQL数据类型之JSON SON类型是MySQL 5.7版本新增的数据类型,用好JSON数据类型可以有效解决很多业务中实际问题。 使用JSON数据类型,推荐用MySQL 8.0.17以上的版本,性能更好,同时也支持Multi-Valued Indexes; JSON数…

Python3 如何实现 websocket 服务?

Python 实现 websocket 服务很简单,有很多的三方包可以用,我从网上大概找到三种常用的包:websocket、websockets、Flask-Sockets。 但这些包很多都“年久失修”, 比如 websocket 在 2010 年就不维护了。 而 Flask-Sockets 也在 2…