【Java 网络编程】UDP API 简介 ( DatagramSocket | DatagramPacket )

简介: 【Java 网络编程】UDP API 简介 ( DatagramSocket | DatagramPacket )

I DatagramSocket


DatagramSocket 类简介 : 负责 UDP 数据的发送和接收 , 该类没有合并到 Socket API 中 , 因为在 Socket 协议中 , 必须要存在服务器端与客户端 , 在 UDP 中 , DatagramSocket 既是服务器又是客户端 , 其不需要监听端口 , 也不需要建立连接 ;




II DatagramSocket 构造方法


DatagramSocket 构造方法 :


① DatagramSocket() : 创建对象 , 不指定监听的端口与 IP 地址 ; 使用该对象发送 UDP 数据 , 其会自动寻找可用的端口 , 将数据发送出去 ;

② DatagramSocket(int port) : 创建对象 , 该 Socket 会监听固定端口 ; 注意该端口是用于监听数据接收的 ; 发送数据使用的不是该端口号 ;

③ DatagramSocket(int port , InetAddress localAddr) : 创建对象 , 该对象监听固定端口与指定的 IP 地址 ; 如果计算机本地有多个 IP 地址 , 此时就可以指定只监听某个 IP 地址的端口 ;



III DatagramSocket 数据操作


1. 接收数据方法 : receive( DatagramPacket dp ) : 接收数据 ;


2. 发送数据 : send( DatagramPacket dp ) : 发送数据 ;


3. 设置超时时间 : setSoTimeout ( int timeout ) : 设置超时时间 , 单位毫秒 ;


4. 释放资源 : close() ;




IV DatagramPacket


DatagramPacket : 用于处理报文 , 其封装了发送的信息 byte[] 数组 , 目标 IP 地址 , 目标端口号等信息 , 封装成报文 ; 也可以将报文拆解成 byte[] 数组信息 ; 该类时 UDP 数据的发送和接收的实体 ;




V DatagramPacket 构造方法


DatagramPacket 构造方法 :


① DatagramPacket ( byte[] buffer , int offset , int length , InetAddress addr , int port ) : 其中 offset 和 length 指定了 buffer 数组的可用区间 ; 后面的两个参数指定目标设设备的 IP 地址与端口号 ; 该 IP 地址和端口仅在发送时有效 ;

② DatagramPacket ( byte[] buffer , int offset , int length , SocketAddress address ) : 前三个参数用于制定要发送的 byte[] 数组信息 , SocketAddress 中封装了 IP 地址和端口号 ;



VI DatagramPacket 设置参数


DatagramPacket 设置数据 :


① setData ( byte[] buffer , int offset , int length ) , 如果在构造函数中没有设置数据 , 或者想要替换发送的数据 , 可以调用该方法设置要发送的数据 ;

② setData ( byte[] buffer) : 设置整个 byte[] 数组作为要发送的数据 ;

③ setLength ( int len ) : 设置数据有效区间 ;

④ setAddress ( InetAddress addr ) : 设置接受数据目标的地址 ; 注意这个 IP 地址发送时有效 , 接收时无效 ;

⑤ setPort ( int port ) : 设置接收数据的端口号 ; 注意这个端口号发送时有效 , 接收时无效 ;

⑥ setSocketAddress ( SocketAddress address ) : 设置 IP 地址 + 端口号数据 ;



VII DatagramPacket 获取参数


DatagramPacket 获取数据 :


① getData() : 获取发送或接受的数据 ;

② getOffset() : 获取 byte[] 数组数据有效数据的开始位置 ;

③ getLength() : 获取 byte[] 数组数据的有效长度 ;

④ getAddress() : 获取 IP 地址信息 ;

⑤ getPort() : 获取端口号信息 ;

⑥ getSocketAddress ( SocketAddress address ) : 获取 IP 地址 + 端口号数据 ;



VIII DatagramPacket IP 地址 端口号 说明


关于 DatagramPacket 的 IP 地址和端口号说明 : 这个 IP 地址和端口号仅在发送时是有效的 , 接收时是无效的 , 在接收到数据时 , IP 地址和端口号是系统解析完报文后 , 自动设置到 DatagramPacket 对象中的 , 仅用于说明该数据是由哪个设备的 IP 地址和端口号发送的 ;



目录
相关文章
|
5天前
|
Java 机器人 大数据
如何在Java中进行网络编程:Socket与NIO
如何在Java中进行网络编程:Socket与NIO
|
8天前
|
Java
【实战演练】JAVA网络编程高手养成记:URL与URLConnection的实战技巧,一学就会!
【6月更文挑战第22天】在Java网络编程中,理解和运用URL与URLConnection是关键。URL代表统一资源定位符,用于标识网络资源;URLConnection则用于建立与URL指定资源的连接。通过构造URL对象并调用openConnection()可创建URLConnection。示例展示了如何发送GET请求读取响应,以及如何设置POST请求以发送数据。GET将参数置于URL,POST将参数置于请求体。练习这些基本操作有助于提升网络编程技能。
|
9天前
|
Java 数据挖掘 开发者
Java网络编程进阶:Socket通信的高级特性与应用
【6月更文挑战第21天】Java Socket通信是分布式应用的基础,涉及高级特性如多路复用(Selector)和零拷贝,提升效率与响应速度。结合NIO和AIO,适用于高并发场景如游戏服务器和实时数据分析。示例展示了基于NIO的多路复用服务器实现。随着技术发展,WebSockets、HTTP/2、QUIC等新协议正变革网络通信,掌握Socket高级特性为应对未来挑战准备。
|
9天前
|
网络协议 安全 Java
Java网络编程入门涉及TCP/IP协议理解与Socket通信。
【6月更文挑战第21天】Java网络编程入门涉及TCP/IP协议理解与Socket通信。TCP/IP协议包括应用层、传输层、网络层和数据链路层。使用Java的`ServerSocket`和`Socket`类,服务器监听端口,接受客户端连接,而客户端连接指定服务器并交换数据。基础示例展示如何创建服务器和发送消息。进阶可涉及多线程、NIO和安全传输。学习这些基础知识能助你构建网络应用。
17 1
|
8天前
|
数据采集 Java 开发者
JAVA网络编程深度探索:URL与URLConnection的精湛技艺
Java网络编程核心在于URL和URLConnection。URL是资源的唯一标识,用于定位网络资源,支持解析、编码解码及参数操作。URLConnection则实现数据交换,允许GET/POST请求,可定制请求头、设置超时,是网络交互的关键。两者结合,适用于网络爬虫等场景,深入学习能提升编程技巧并揭示网络编程奥秘。
|
8天前
|
XML JSON 搜索推荐
【高手过招】JAVA网络编程对决:URL与URLConnection的高级玩法,你敢挑战吗?
【6月更文挑战第22天】在Java网络编程中,URL与URLConnection是核心工具,高手利用它们进行高级操作。从定制请求头(如User-Agent和Authorization)以适应不同场景,到利用POST请求发送复杂数据,甚至是通过设置代理(HTTP或SOCKS)穿越网络障碍,以及运用异步处理和流操作提升效率,每个技巧都是提升网络交互的关键。通过深入学习和实践,开发者可以在网络编程领域不断提升,应对各种挑战。
|
8天前
|
Java
【思维导图】JAVA网络编程思维升级:URL与URLConnection的逻辑梳理,助你一臂之力!
【6月更文挑战第22天】Java网络编程中,URL是资源定位器,用于解析和创建网络地址;URLConnection接口负责建立到URL资源的连接。示例展示了如何使用URL类获取协议、主机、端口和路径,以及如何通过HttpURLConnection进行GET/POST请求,设置超时并处理响应。思维导图概述了从创建URL到设置请求属性、发送请求及处理响应的完整流程,帮助理解两者在网络编程中的作用。
|
8天前
|
缓存 安全 Java
【技术前沿】JAVA网络编程黑科技:URL与URLConnection的创新应用,带你飞越极限!
【6月更文挑战第22天】Java的URL和URLConnection在现代网络编程中扮演关键角色,不仅用于基本HTTP请求,还在微服务(弹性自动化调用)、智能缓存策略、异步处理和安全增强方面展现创新应用。例如,它们支持动态服务发现、HTTP缓存控制、非阻塞I/O和HTTPS加密,助力开发者构建高效、安全的网络解决方案。通过掌握这些技术,可以提升项目性能,应对云计算和大数据时代的挑战。
|
8天前
|
安全 Java 网络安全
【认知革命】JAVA网络编程新视角:重新定义URL与URLConnection,让网络资源触手可及!
【6月更文挑战第22天】JAVA网络编程中,URL代表统一资源定位符,用于表示网络资源地址。通过`new URL("address")`创建URL对象,可解析和访问其组件。URLConnection是与URL建立连接的接口,用于定制HTTP请求,如设置GET/POST、超时及交换数据。
|
1天前
|
Java API
Java网络编程实战指南与示例代码
Java网络编程实战指南与示例代码

热门文章

最新文章