DatagramPacket API 详解

本文详细解析了数据报包的概念及其在无连接包投递服务中的应用,并着重介绍了Java平台提供的DatagramPacket类,包括其构造函数、属性和方法,帮助开发者更好地理解和使用这一关键网络组件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此类表示数据报包。

数据报包用来实现无连接包投递服务。每条报文仅根据该包中包含的信息从一台机器路由到另一台机器。从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到达。不对包投递做出保证。

version1.46, 04/07/06
sinceJDK1.0


Constructors
publicDatagramPacket(byte[] buf, int offset, int length)
zh_cn
构造 DatagramPacket,用来接收长度为 length 的包,在缓冲区中指定了偏移量。

length 参数必须小于等于 buf.length

buf
zh_cn
保存传入数据报的缓冲区。
offset
zh_cn
缓冲区的偏移量
length
zh_cn
要读取的字节数。
since1.2

publicDatagramPacket(byte[] buf, int length)
zh_cn
构造 DatagramPacket,用来接收长度为 length 的数据包。

length 参数必须小于等于 buf.length

buf
zh_cn
保存传入数据报的缓冲区。
length
zh_cn
要读取的字节数。

publicDatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port)
zh_cn
构造数据报包,用来将长度为 length 偏移量为 offset 的包发送到指定主机上的指定端口号。length 参数必须小于等于buf.length
buf
zh_cn
包数据。
offset
zh_cn
包数据偏移量。
length
zh_cn
包数据长度。
address
zh_cn
目的地址。
port
zh_cn
目的端口号。
since1.2
See alsojava.net.InetAddress
publicDatagramPacket(byte[] buf, int offset, int length, SocketAddress address) throws SocketException
zh_cn
构造数据报包,用来将长度为 length 偏移量为 offset 的包发送到指定主机上的指定端口号。length 参数必须小于等于buf.length
buf
zh_cn
包数据。
offset
zh_cn
包数据偏移量。
length
zh_cn
包数据长度。
address
zh_cn
目的套接字地址。
ThrowsIllegalArgumentException
zh_cn
如果地址类型不受支持
since1.4
See alsojava.net.InetAddress
publicDatagramPacket(byte[] buf, int length, InetAddress address, int port)
zh_cn
构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。length 参数必须小于等于 buf.length
buf
zh_cn
包数据。
length
zh_cn
包长度。
address
zh_cn
目的地址。
port
zh_cn
目的端口号。
See alsojava.net.InetAddress
publicDatagramPacket(byte[] buf, int length, SocketAddress address) throws SocketException
zh_cn
构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。length 参数必须小于等于 buf.length
buf
zh_cn
包数据。
length
zh_cn
包长度。
address
zh_cn
目的地址。
ThrowsIllegalArgumentException
zh_cn
如果地址类型不受支持
since1.4
See alsojava.net.InetAddress

Properties
public voidsetAddress(InetAddress iaddr)
zh_cn
设置要将此数据报发往的那台机器的 IP 地址。
iaddr
zh_cn
InetAddress
sinceJDK1.1
See alsogetAddress()
public InetAddressgetAddress()
zh_cn
返回某台机器的 IP 地址,此数据报将要发往该机器或者是从该机器接收到的。
return
zh_cn
某台机器的 IP 地址,此数据报将要发往该机器或者是从该机器接收到的。
See alsojava.net.InetAddresssetAddress(java.net.InetAddress)
public voidsetData(byte[] buf, int offset, int length)
zh_cn
为此包设置数据缓冲区。此方法设置包的数据、长度和偏移量。
buf
zh_cn
要为此包设置的缓冲区。
offset
zh_cn
数据中的偏移量
length
zh_cn
数据的长度和/或用来接收数据的缓冲区长度。
ThrowsNullPointerException
zh_cn
如果参数为 null。
since1.2
See alsogetDatagetOffsetgetLength
public voidsetData(byte[] buf)
zh_cn
为此包设置数据缓冲区。将此 DatagramPacket 的偏移量设置为 0,长度设置为 buf 的长度。
buf
zh_cn
要为此包设置的缓冲区。
ThrowsNullPointerException
zh_cn
如果参数为 null。
sinceJDK1.1
See alsogetLengthgetData
public byte[]getData()
zh_cn
返回数据缓冲区。接收到的或将要发送的数据从缓冲区中的偏移量 offset 处开始,持续 length 长度。
return
zh_cn
用来接收或发送数据的缓冲区
See alsosetData(byte[], int, int)
public voidsetLength(int length)
zh_cn
为此包设置长度。包的长度是指包数据缓冲区中将要发送的字节数,或用来接收数据的包数据缓冲区的字节数。长度必须小于等于偏移量与包缓冲区长度之和。
length
zh_cn
要为此包设置的长度。
ThrowsIllegalArgumentException
zh_cn
如果长度为负或大于包数据缓冲区长度。
sinceJDK1.1
See alsogetLengthsetData
public intgetLength()
zh_cn
返回将要发送或接收到的数据的长度。
return
zh_cn
将要发送或接收到的数据的长度。
See alsosetLength(int)
public intgetOffset()
zh_cn
返回将要发送或接收到的数据的偏移量。
return
zh_cn
将要发送或接收到的数据的偏移量。
since1.2
public voidsetPort(int iport)
zh_cn
设置要将此数据报发往的远程主机上的端口号。
iport
zh_cn
端口号
sinceJDK1.1
See alsogetPort()
public intgetPort()
zh_cn
返回某台远程主机的端口号,此数据报将要发往该主机或者是从该主机接收到的。
return
zh_cn
返回某台远程主机的端口号,此数据报将要发往该主机或者是从该主机接收到的。
See alsosetPort(int)
public voidsetSocketAddress(SocketAddress address)
zh_cn
设置要将此数据报发往的远程主机的 SocketAddress(通常为 IP 地址 + 端口号)。
address
zh_cn
SocketAddress
ThrowsIllegalArgumentException
zh_cn
如果地址为 null 或为不受此套接字支持的 SocketAddress 子类。
since1.4
See alsogetSocketAddress
public SocketAddressgetSocketAddress()
zh_cn
获取要将此包发送到的或发出此数据报的远程主机的 SocketAddress(通常为 IP 地址 + 端口号)。
return
zh_cn
SocketAddress
since1.4
See alsosetSocketAddress
 API  http://doc.java.sun.com/DocWeb/api/all/java.net.DatagramPacket

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值