Java学习笔记—UDP通信
一、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通信相关推荐
- Java学习笔记—TCP通信
一.TCP通信原理 TCP(Transmission Control Protocol)协议是面向链接的通信协议,即数据传输之前,先在发送端和接收端建立逻辑链接,然后再传输数据,它提供了两台计算机之间 ...
- java学习笔记14--多线程编程基础1
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note14.html,转载请注明源地址. 多线程编程基础 多进程 一个独立程序的每一次运行称为 ...
- Java学习笔记(7)——Java基础之IO多线程网络思维导图
Java面向对象学习笔记之:包括IO(字节流,字符流,节点流,处理流).线程(线程创建,线程控制,线程同步).网络(TCP Scoket, UDP Scoket)(全屏观看Java学习笔记(7)-- ...
- LiteOS学习笔记-5通信模组之LiteOS的SAL及socket编程
LiteOS学习笔记-5通信模组之LiteOS的SAL及socket编程 一.SAL套接字抽象层 二.Socket套接字简介 Socket概述 Socket结构体 字节序转换函数 ip地址的转换 字节 ...
- Java学习笔记之基础篇
Java学习笔记之基础篇 目录 Java如何体现平台的无关性? 面向对象(OO)的理解 面向对象和面向过程编程的区别 面向对象三大特征 静态绑定和动态绑定(后期绑定) 延伸:类之间的关系 组合(聚合) ...
- java学习笔记11--Annotation
java学习笔记11--Annotation Annotation:在JDK1.5之后增加的一个新特性,这种特性被称为元数据特性,在JDK1.5之后称为注释,即:使用注释的方式加入一些程序的信息. j ...
- java学习笔记13--反射机制与动态代理
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note13.html,转载请注明源地址. Java的反射机制 在Java运行时环境中,对于任意 ...
- 准备写java学习笔记
准备写java学习笔记 java int 转载于:https://blog.51cto.com/cryingcloud/1975267
- Java学习笔记--StringTokenizer的使用
2019独角兽企业重金招聘Python工程师标准>>> Java Tips: 使用Pattern.split替代String.split String.split方法很常用,用于切割 ...
最新文章
- 如何看待和评价浙江大学18级硕士研究生齐俏两年发14篇论文,获浙大最高层次奖学金?...
- phpthink 隐藏index.php,nginx 配置--支持phpthink框架 path_info
- Linux编译动态链接库
- 01-密码学基础-前言
- 励志!26岁单臂博士生:我想在科研的道路上发更多高质量论文
- /bin/bash^M: bad interpreter: No such file or directory
- 向内存中连续存入数据_实例35_在Excel中按条件筛选数据并存入新的表
- 协助你写 Python,只是 AI 取代程序员的第一步
- mysql多实例访问代理_一台MySQL数据库启动多个实例
- 清理window日志垃圾.bat
- 波束赋形beamforming
- win7如何设置通电自动开机_WIN7旗舰版在BIOS界面下如何设置自动开机?
- 中国工程咨询行业十四五投资机会与运营风险评估报告2022-2028年
- 开发小程序插件如何实现盈利?
- python自学网站-杭州python自学网站
- java下载zip文件损坏_使用Java下载.zip文件会导致损坏的.zip文件?
- Windows 使用 Alias,高效办公指南
- 如何用JS刷新当前页面
- 需求规格说明书RUP版
- 各种泵的图形符号_定量泵的图形符号