【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月前
|
JSON 移动开发 网络协议
Java网络编程:Socket通信与HTTP客户端
本文全面讲解Java网络编程,涵盖TCP与UDP协议区别、Socket编程、HTTP客户端开发及实战案例,助你掌握实时通信、文件传输、聊天应用等场景,附性能优化与面试高频问题解析。
|
3月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
239 1
|
3月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
256 1
|
3月前
|
机器学习/深度学习 分布式计算 Java
Java与图神经网络:构建企业级知识图谱与智能推理系统
图神经网络(GNN)作为处理非欧几里得数据的前沿技术,正成为企业知识管理和智能推理的核心引擎。本文深入探讨如何在Java生态中构建基于GNN的知识图谱系统,涵盖从图数据建模、GNN模型集成、分布式图计算到实时推理的全流程。通过具体的代码实现和架构设计,展示如何将先进的图神经网络技术融入传统Java企业应用,为构建下一代智能决策系统提供完整解决方案。
436 0
|
4月前
|
网络协议 安全 网络安全
什么是TCP/UDP/HTTP?它们如何影响你的内网穿透体验?
数据的传输离不开各种协议,它们就像现实世界中的交通规则,规定了数据如何打包、寻址、传输和接收。对于使用内网穿透的用户来说,理解TCP、UDP和HTTP这些基础协议的特点,能帮助你更好地理解其性能表现,并选择最适合的配置方案。
|
6月前
|
网络协议 安全 网络安全
详细阐述 TCP、UDP、ICMPv4 和 ICMPv6 协议-以及防火墙端口原理优雅草卓伊凡
详细阐述 TCP、UDP、ICMPv4 和 ICMPv6 协议-以及防火墙端口原理优雅草卓伊凡
543 2
|
9月前
|
网络协议 Java 开发工具
全平台开源即时通讯IM框架MobileIMSDK:7端+TCP/UDP/WebSocket协议,鸿蒙NEXT端已发布,5.7K Stars
全平台开源即时通讯IM框架MobileIMSDK:7端+TCP/UDP/WebSocket协议,鸿蒙NEXT端已发布,5.7K Stars
584 1
|
监控 网络协议 网络性能优化
不再困惑!一文搞懂TCP与UDP的所有区别
本文介绍网络基础中TCP与UDP的区别及其应用场景。TCP是面向连接、可靠传输的协议,适用于HTTP、FTP等需要保证数据完整性的场景;UDP是无连接、不可靠但速度快的协议,适合DNS、RIP等对实时性要求高的应用。文章通过对比两者在连接方式、可靠性、速度、流量控制和数据包大小等方面的差异,帮助读者理解其各自特点与适用场景。
|
网络协议 算法 网络性能优化
|
存储 网络协议 安全
用于 syslog 收集的协议:TCP、UDP、RELP
系统日志是从Linux/Unix设备及网络设备生成的日志,可通过syslog服务器集中管理。日志传输支持UDP、TCP和RELP协议。UDP无连接且不可靠,不推荐使用;TCP可靠,常用于rsyslog和syslog-ng;RELP提供可靠传输和反向确认。集中管理日志有助于故障排除和安全审计,EventLog Analyzer等工具可自动收集、解析和分析日志。
928 2