前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Java 网络编程】UDP API 简介 ( DatagramSocket | DatagramPacket )

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

作者头像
韩曙亮
发布2023-03-27 17:01:31
3780
发布2023-03-27 17:01:31
举报
文章被收录于专栏:韩曙亮的移动开发专栏

文章目录

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 地址和端口号发送的 ;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-08-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
    • I DatagramSocket
      • II DatagramSocket 构造方法
        • III DatagramSocket 数据操作
          • IV DatagramPacket
            • V DatagramPacket 构造方法
              • VI DatagramPacket 设置参数
                • VII DatagramPacket 获取参数
                  • VIII DatagramPacket IP 地址 端口号 说明
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档