当前位置: 首页 > news >正文

UDP通信:快速入门

UDP协议通信模型演示

UDP API

DatagramPacket:数据包对象(韭菜盘子) 

public DatagramPacket(byte[] buf, int length, InetAddress address, int port)创建发送端数据包对象 buf:要发送的内容,字节数组 length:要发送内容的字节长度 address:接收端的IP地址对象 port:接收端的端口号
public DatagramPacket(byte[] buf, int length)创建接收端的数据包对象 buf:用来存储接收的内容 length:能够接收内容的长度
public int getLength()获得实际接收到的字节个数

 DatagramSocket:发送端和接收端对象(人)

public DatagramSocket()创建发送端的Socket对象,系统会随机分配一个端口号。
public DatagramSocket(int port)创建接收端的Socket对象并指定端口号
public void send(DatagramPacket dp)发送数据包
public void receive(DatagramPacket p)接收数据包

使用UDP通信实现:发送消息、接收消息

客户端实现步骤

创建DatagramSocket对象(发送端对象)                      扔韭菜的人

创建DatagramPacket对象封装需要发送的数据(数据包对象)                 韭菜盘子

使用DatagramSocket对象的send方法传入DatagramPacket对象                 开始抛出韭菜

释放资源

接收端实现步骤

创建DatagramSocket对象并指定端口(接收端对象)                      接韭菜的人

创建DatagramPacket对象接收数据(数据包对象)                 韭菜盘子

使用DatagramSocket对象的receive方法传入DatagramPacket对象                 开始接收韭菜

释放资源

代码实现

/**发送端  一发 一收*/
public class ClientDemo1 {public static void main(String[] args) throws Exception {System.out.println("=====客户端启动======");// 1、创建发送端对象:发送端自带默认的端口号(人)DatagramSocket socket = new DatagramSocket(6666);// 2、创建一个数据包对象封装数据(韭菜盘子)/**public DatagramPacket(byte buf[], int length,InetAddress address, int port)参数一:封装要发送的数据(韭菜)参数二:发送数据的大小参数三:服务端的主机IP地址参数四:服务端的端口*/byte[] buffer = "我是一颗快乐的韭菜,你愿意吃吗?".getBytes();DatagramPacket packet = new DatagramPacket( buffer, buffer.length,InetAddress.getLocalHost() , 8888);// 3、发送数据出去socket.send(packet);socket.close();}
}
/**接收端*/
public class ServerDemo2 {public static void main(String[] args) throws Exception {System.out.println("=====服务端启动======");// 1、创建接收端对象:注册端口(人)DatagramSocket socket = new DatagramSocket(8888);// 2、创建一个数据包对象接收数据(韭菜盘子)byte[] buffer = new byte[1024 * 64];DatagramPacket packet = new DatagramPacket(buffer, buffer.length);// 3、等待接收数据。socket.receive(packet);// 4、取出数据即可// 读取多少倒出多少int len = packet.getLength();String rs = new String(buffer,0, len);System.out.println("收到了:" + rs);// 获取发送端的ip和端口String ip  =packet.getSocketAddress().toString();System.out.println("对方地址:" + ip);int port  = packet.getPort();System.out.println("对方端口:" + port);socket.close();}
}

http://www.lryc.cn/news/190987.html

相关文章:

  • 修炼k8s+flink+hdfs+dlink(四:k8s(一)概念)
  • redis与 缓存击穿、缓存穿透、缓存雪崩
  • 印度网络安全:威胁与应对
  • AR动态贴纸SDK,让创作更加生动有趣
  • MySQL常用命令01
  • Java synchronized 关键字
  • 滑动窗口算法(C语言描述)
  • 【已修复】vcruntime140.dll有什么用,vcruntime140.dll缺失如何修复
  • 10月12日,每日信息差
  • 网络安全技术(黑客学习)——自学方法
  • 引领创新浪潮:“Polygon探寻新技术、新治理、新代币的未来之路!“
  • Android 13.0 添加自定义服务,并生成jar给第三方app调用
  • PG14归档失败解决办法archiver failed on wal_lsn
  • YB4014是可以对单节磷酸铁锂电池进行恒流/恒压充电管理的集成电路。
  • STL——查找算法及实例
  • Ant Design Form.List基础用法
  • 怎么优化H5让它可以在300ms以内打开?
  • Zabbix安装出现必要条件检查失败
  • 精通Maven的捷径:一文包揽所有必知必学
  • SpringCloud溯源——从单体架构到微服务Microservices架构 分布式和微服务 为啥要用微服务
  • springboot 配置 servlet filter 2
  • 前端axios下载导出文件工具封装
  • Web应用防火墙的性能优化技术
  • 华为HCIP题库h12-821题库新增30题
  • 智慧办公数据可视化大屏设计(数据可视化)、大数据、数据大屏、办公数据大屏、办公数据
  • echarts实现横轴刻度名倾斜展示,并且解决文字超出部分消失问题
  • awk常用统计命令
  • Linux:【Kafka四】集群介绍与单机搭建
  • 代码随想录算法训练营Day52|动态规划11
  • Android渲染系列之原理概述篇