文章目录

  • I DatagramSocket
  • II DatagramSocket 构造方法
  • III DatagramSocket 数据操作
  • IV DatagramPacket
  • V DatagramPacket 构造方法
  • VI DatagramPacket 设置参数
  • VII DatagramPacket 获取参数
  • VIII DatagramPacket IP 地址 端口号 说明

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

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

  1. Java网络编程UDP编程

    一. 简单先介绍一下网络编程 1. 概念 : 通过网络IP连接起来,实现网络通信,数据传输的操作,就是网络编程 2. 实现 : 目前来说当前主要有两种实现的方法,TCP和UDP: 其中TCP需要划分客 ...

  2. Java网络编程——UDP

    网络编程,UDP编程 网络编程 网络编程三要素 IP ipv4 ipv6 Java获取IP 端口 端口号 协议 UDP协议 TCP协议 UDP通信程序 发送步骤 接收步骤 单播 组播 广播 网络编程 ...

  3. java网络编程 UDP通信协议实现局域网内文件的发送和接收

    要实现两台内网下的机子进行通信,首先得知道接收方的内网IP,获取IP的方式:可以打开任务管理器的以太网进行查看: 如下 也可以通过 win+r 输入cmd ,然后输入 ipconfig  回车  进行 ...

  4. java 网络编程 UDP TCP

    网络编程 网络编程主要用于解决计算机与计算机(手机.平板..)之间的数据传输问题. 网络编程: 不需要基于html页面就可以达到数据之间的传输. 比如: feiQ , QQ , 微信.... 网页编程 ...

  5. 关于JAVA网络编程UDP和TCP(上)

    对于JAVA的网络编程我们又称之为socket编程.首先,网络编程,顾名思义,要涉及到网络,其中网络协议是必不可少的对于我们而言,一个重要的网络协议是大家要会的:TCP/IP协议,udp协议. 一.网 ...

  6. Java网络编程————UDP实现ThinkPad S5网络唤醒

    功能要求:通过Java程序实现ThinkPad S5 笔记本网络唤醒 必备知识: 一.定义:网络唤醒,通过局域网.互联网或通讯网络,以有线网卡的形式,向目标电脑发送魔法包(Magic Packet), ...

  7. JAVA网络编程 -UDP篇(简单实现网络聊天)

    通过UDP实现网络聊天 多线程实现UDP网络聊天 1. 编写UDP发送线程UdpSendThread import java.io.BufferedReader; import java.io.IOE ...

  8. c 语言 网络唤醒,Java网络编程————UDP实现ThinkPad S5网络唤醒-Go语言中文社区...

    功能要求:通过Java程序实现ThinkPad S5 笔记本网络唤醒 必备知识: 一.定义:网络唤醒,通过局域网.互联网或通讯网络,以有线网卡的形式,向目标电脑发送魔法包(Magic Packet), ...

  9. [Java网络编程]UDP通信程序练习

    代码如下: package UdpPracticePack;import java.io.BufferedReader; import java.io.IOException; import java ...

最新文章

  1. Leetcode84 柱状图中最大的矩形 详细的解法
  2. Django 框架入门篇(安装与创建项目)
  3. Linux IPC POSIX 消息队列
  4. centos 7 修复mysql,快速修复Centos7 系统时区!
  5. 海康9800平台linux的sdk,流媒体项目外包海康9800平台sdk适配
  6. SQL 使用总结五(杂记)
  7. 今天和朋友去参观一家做电商创业公司
  8. leetcode python3 简单题125. Valid Palindrome
  9. 删除安装的python
  10. java IO流分类
  11. 哈尔滨工业大学计算机考研难吗,哈尔滨工业大学(专业学位)计算机技术考研难吗...
  12. wcdma系统随机接入过程的流程图_一种随机接入方法与流程
  13. 娱乐至死,年轻人的慢性毒药
  14. 又是一年WWDC,暨回顾去年之旅——Part II
  15. 高项_第十一章项目风险管理
  16. .net 之美读书笔记
  17. 华为2288HV5服务器内存插法及内存插槽位置
  18. IOS项目新手引导页图片适配方案
  19. 51单片机c语言的秒表设计,基于51单片机的计时器设计
  20. Mastering Spark for Data Science:输入格式和架构

热门文章

  1. 在RHEL-4下半小时搭建Sendmail邮件服务器(下)
  2. 后盾网lavarel视频项目---vue-axios基本用法
  3. 解决vs启动出现“cannot find one or more components .Please reinstall the application”
  4. 2018.3.29 网页中嵌套网页的两种方法
  5. Centos入门-3
  6. Android 强烈推荐:程序员接私活那点事
  7. C#.Net网页加载等待效果漂亮并且简单
  8. 为朋友写的一个投票功能的提交代码
  9. Convert.ToInt32
  10. 23 Python常用模块(一)