一、UDP通信原理

UDP协议(用户数据报协议 User Datagram Protocol)是一种无连接通信协议,
即在数据传输时数据发送端和接收端不建立逻辑链接。因此UDP协议是一种
不可靠的网络协议,它在通信的两端各建立一个Socket对象,但是这两个
Socket只是发送和接收数据的对象。它的通信双方也没有客户端和服务端
的概念。

二、UDP发送数据步骤

1、创建发送端的Socket对象
2、创建数据,并把数据打包
3、调用对象的方法发送数据
4、关闭发送端

三、UDP接收数据步骤

1、创建接收端Socket对象
2、创建数据包
3、接收数据
4、解析数据
5、关闭接收端

四、UDP通信案例

//发送端import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
/*UDP发送数据:数据来自键盘输入,直到数据输入是886,发送数据结束*/
public class UDPSendDemo {public static void main(String[] args) throws IOException {//创建发送端DatagramSocket对象//DatagramSocket()构造数据报套接字并将其绑定到本地主机上任何可用的端口DatagramSocket ds = new DatagramSocket();System.out.println("请输入要发送的数据:");//创建Scanner对象/*Scanner sc = new Scanner(System.in);String line = sc.nextLine();*///自己封装键盘输入数据//static InputStream in “标准”输入流。BufferedReader br = new BufferedReader(new InputStreamReader(System.in));/*String line = br.readLine();//错误写法,这样写的话String line = br.readLine()只执行了一次,因此到while中判断的时候一直会判断第一次输入的内容,接收端也只能接收到第一句while (line != null) {   */String line;while ((line = br.readLine())!= null) {if (line.equals("886")) {break;}//创建数据并打包byte[] bytes = line.getBytes();DatagramPacket dp = new DatagramPacket(bytes, bytes.length,InetAddress.getByName("192.168.1.5"),10801);//发送数据ds.send(dp);}//录入886之后关闭发送端ds.close();}
}//UDP接收端
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;/*UDP接收数据:因为不知道发送端什么时候发送,故采用死循环接收*/
public class UDPReceiveDemo {public static void main(String[] args) throws IOException {//创建接收端对象DatagramSocket ds = new DatagramSocket(10801);//死循环,接收端一直等待接收数据while (true) {//创建数据包byte[] bytes = new byte[1024];DatagramPacket dp = new DatagramPacket(bytes, bytes.length);//接收数据ds.receive(dp);//解析数据String str = new String(dp.getData(), 0, dp.getLength());System.out.println("接收到的数据是:" + str);}}
}
运行时,先运行接收端,然后在运行发送端。由于上述的案例接收端添加了死循环一直等待发送端发送数据,所以没有关闭接
收端,所以最后需要我们手动去关闭哦!运行结果:
请输入要发送的数据:
你好


接收到的数据是:你好

输入端输入:
请输入要发送的数据:
你好
886
发送端关闭

Java学习笔记—UDP通信相关推荐

  1. Java学习笔记—TCP通信

    一.TCP通信原理 TCP(Transmission Control Protocol)协议是面向链接的通信协议,即数据传输之前,先在发送端和接收端建立逻辑链接,然后再传输数据,它提供了两台计算机之间 ...

  2. java学习笔记14--多线程编程基础1

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note14.html,转载请注明源地址. 多线程编程基础 多进程 一个独立程序的每一次运行称为 ...

  3. Java学习笔记(7)——Java基础之IO多线程网络思维导图

    Java面向对象学习笔记之:包括IO(字节流,字符流,节点流,处理流).线程(线程创建,线程控制,线程同步).网络(TCP Scoket,  UDP Scoket)(全屏观看Java学习笔记(7)-- ...

  4. LiteOS学习笔记-5通信模组之LiteOS的SAL及socket编程

    LiteOS学习笔记-5通信模组之LiteOS的SAL及socket编程 一.SAL套接字抽象层 二.Socket套接字简介 Socket概述 Socket结构体 字节序转换函数 ip地址的转换 字节 ...

  5. Java学习笔记之基础篇

    Java学习笔记之基础篇 目录 Java如何体现平台的无关性? 面向对象(OO)的理解 面向对象和面向过程编程的区别 面向对象三大特征 静态绑定和动态绑定(后期绑定) 延伸:类之间的关系 组合(聚合) ...

  6. java学习笔记11--Annotation

    java学习笔记11--Annotation Annotation:在JDK1.5之后增加的一个新特性,这种特性被称为元数据特性,在JDK1.5之后称为注释,即:使用注释的方式加入一些程序的信息. j ...

  7. java学习笔记13--反射机制与动态代理

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note13.html,转载请注明源地址. Java的反射机制 在Java运行时环境中,对于任意 ...

  8. 准备写java学习笔记

    准备写java学习笔记 java int 转载于:https://blog.51cto.com/cryingcloud/1975267

  9. Java学习笔记--StringTokenizer的使用

    2019独角兽企业重金招聘Python工程师标准>>> Java Tips: 使用Pattern.split替代String.split String.split方法很常用,用于切割 ...

最新文章

  1. 如何看待和评价浙江大学18级硕士研究生齐俏两年发14篇论文,获浙大最高层次奖学金?...
  2. phpthink 隐藏index.php,nginx 配置--支持phpthink框架 path_info
  3. Linux编译动态链接库
  4. 01-密码学基础-前言
  5. 励志!26岁单臂博士生:我想在科研的道路上发更多高质量论文
  6. /bin/bash^M: bad interpreter: No such file or directory
  7. 向内存中连续存入数据_实例35_在Excel中按条件筛选数据并存入新的表
  8. 协助你写 Python,只是 AI 取代程序员的第一步
  9. mysql多实例访问代理_一台MySQL数据库启动多个实例
  10. 清理window日志垃圾.bat
  11. 波束赋形beamforming
  12. win7如何设置通电自动开机_WIN7旗舰版在BIOS界面下如何设置自动开机?
  13. 中国工程咨询行业十四五投资机会与运营风险评估报告2022-2028年
  14. 开发小程序插件如何实现盈利?
  15. python自学网站-杭州python自学网站
  16. java下载zip文件损坏_使用Java下载.zip文件会导致损坏的.zip文件?
  17. Windows 使用 Alias,高效办公指南
  18. 如何用JS刷新当前页面
  19. 需求规格说明书RUP版
  20. 各种泵的图形符号_定量泵的图形符号

热门文章

  1. with open的使用
  2. a/a的4种链接方式
  3. 稠密连接网络(DenseNet)
  4. 【数据结构学习之完全从零实现所有数据结构的代码编写之二】智能指针
  5. 解决ffmpeg拉流转发频繁丢包问题max delay reached. need to consume packet
  6. 日志log4cxx 封装、实例讲解、配置文件log4cxx.properties
  7. 面向对象(二)——三大特性(封装、继承、多态)
  8. 宁波Uber优步司机奖励政策(12月14日到12月20日)
  9. 搭建TFS2008的过程及其注意事项
  10. Final Michael Scofield