java.lang.Object
java.net.DatagramPacket
这个类表示数据报包。
数据报包用于实现无连接的数据包传递服务。每个消息仅基于数据包中包含的信息从一台机器路由到另一台机器。从一台机器发送到另一台机器的多个数据包可能被不同路由,并且可能以任何顺序到达。数据包传递不被保证。
除非另有规定,传递null
参数会导致抛出NullPointerException
。
DatagramPacket
的方法和构造函数接受类型为SocketAddress
的参数。 DatagramPacket
支持InetSocketAddress
,并且可能支持其他SocketAddress
子类型。
- 自:
- 1.0
-
Constructor Summary
ConstructorDescriptionDatagramPacket
(byte[] buf, int length) 为接收长度为length
的数据包构造一个DatagramPacket
。DatagramPacket
(byte[] buf, int offset, int length) 为接收长度为length
的数据包构造一个DatagramPacket
,指定缓冲区中的偏移量。DatagramPacket
(byte[] buf, int offset, int length, InetAddress address, int port) 为发送长度为length
且偏移量为offset
的数据包到指定主机的指定端口号构造一个数据报包。DatagramPacket
(byte[] buf, int offset, int length, SocketAddress address) 为发送长度为length
且偏移量为offset
的数据包到指定主机的指定端口号构造一个数据报包。DatagramPacket
(byte[] buf, int length, InetAddress address, int port) 为发送长度为length
的数据包到指定主机的指定端口号构造一个数据报包。DatagramPacket
(byte[] buf, int length, SocketAddress address) 为发送长度为length
的数据包到指定主机的指定端口号构造一个数据报包。 -
Method Summary
Modifier and TypeMethodDescription返回此数据报发送到的机器的IP地址或接收到数据报的机器的IP地址,如果未设置则返回null
。byte[]
getData()
返回数据缓冲区。int
返回要发送的数据的长度或接收到的数据的长度。int
返回要发送的数据的偏移量或接收到的数据的偏移量。int
getPort()
返回此数据报发送到的远程主机的端口号或接收到数据报的远程主机的端口号,如果未设置则返回0。void
setAddress
(InetAddress iaddr) 设置此数据报发送到的机器的IP地址。void
setData
(byte[] buf) 为此数据包设置数据缓冲区。void
setData
(byte[] buf, int offset, int length) 为此数据包设置数据缓冲区。void
setLength
(int length) 设置此数据包的长度。void
setPort
(int iport) 设置此数据报发送到的远程主机的端口号。void
setSocketAddress
(SocketAddress address) 设置发送此数据报的远程主机的SocketAddress(通常为IP地址 + 端口号)。
-
Constructor Details
-
DatagramPacket
public DatagramPacket(byte[] buf, int offset, int length) 为接收长度为length
的数据包构造一个DatagramPacket
,指定缓冲区中的偏移量。length
参数必须小于或等于buf.length
。- 参数:
-
buf
- 用于保存传入数据报的缓冲区。 -
offset
- 缓冲区的偏移量 -
length
- 要读取的字节数。 - 抛出:
-
IllegalArgumentException
- 如果长度或偏移量为负数,或者长度加偏移量大于给定缓冲区的数据包长度。 - 自:
- 1.2
-
DatagramPacket
public DatagramPacket(byte[] buf, int length) 为接收长度为length
的数据包构造一个DatagramPacket
。length
参数必须小于或等于buf.length
。- 参数:
-
buf
- 用于保存传入数据报的缓冲区。 -
length
- 要读取的字节数。 - 抛出:
-
IllegalArgumentException
- 如果长度为负数或长度大于给定缓冲区的数据包长度。
-
DatagramPacket
为发送长度为length
且偏移量为offset
的数据包到指定主机的指定端口号构造一个数据报包。length
参数必须小于或等于buf.length
。- 参数:
-
buf
- 数据包数据。 -
offset
- 数据包数据偏移量。 -
length
- 数据包数据长度。 -
address
- 目标地址,或null
。 -
port
- 目标端口号。 - 抛出:
-
IllegalArgumentException
- 如果长度或偏移量为负数,或者长度加偏移量大于给定缓冲区的数据包长度,或者端口号超出范围。 - 自:
- 1.2
- 参见:
-
DatagramPacket
为发送长度为length
且偏移量为offset
的数据包到指定主机的指定端口号构造一个数据报包。length
参数必须小于或等于buf.length
。- 参数:
-
buf
- 数据包数据。 -
offset
- 数据包数据偏移量。 -
length
- 数据包数据长度。 -
address
- 目标套接字地址。 - 抛出:
-
IllegalArgumentException
- 如果地址为null或其类型不受支持,或者长度或偏移量为负数,或者长度加偏移量大于给定缓冲区的数据包长度。 - 自:
- 1.4
- 参见:
-
DatagramPacket
为发送长度为length
的数据包到指定主机的指定端口号构造一个数据报包。length
参数必须小于或等于buf.length
。- 参数:
-
buf
- 数据包数据。 -
length
- 数据包长度。 -
address
- 目标地址,或null
。 -
port
- 目标端口号。 - 抛出:
-
IllegalArgumentException
- 如果长度为负数,或者长度大于给定缓冲区的数据包长度,或者端口号超出范围。 - 参见:
-
DatagramPacket
为发送长度为length
的数据包到指定主机的指定端口号构造一个数据报包。length
参数必须小于或等于buf.length
。- 参数:
-
buf
- 数据包数据。 -
length
- 数据包长度。 -
address
- 目标地址。 - 抛出:
-
IllegalArgumentException
- 如果地址为null或其类型不受支持,或者长度为负数,或者长度大于给定缓冲区的数据包长度,或者端口号超出范围。 - 自:
- 1.4
- 参见:
-
-
Method Details
-
getAddress
返回此数据报发送到的机器的IP地址或接收到数据报的机器的IP地址,如果未设置则返回null
。- 返回:
- 此数据报发送到的机器的IP地址或接收到数据报的机器的IP地址。
- 参见:
-
getPort
public int getPort()返回此数据报发送到的远程主机的端口号或接收到数据报的远程主机的端口号,如果未设置则返回0。- 返回:
- 此数据报发送到的远程主机的端口号或接收到数据报的远程主机的端口号。
- 参见:
-
getData
public byte[] getData()返回数据缓冲区。接收到的数据或要发送的数据从缓冲区中的offset
开始,并持续length
长。- 返回:
- 用于接收或发送数据的缓冲区
- 参见:
-
getOffset
public int getOffset()返回要发送的数据的偏移量或接收到的数据的偏移量。- 返回:
- 要发送的数据的偏移量或接收到的数据的偏移量。
- 自:
- 1.2
-
getLength
public int getLength()返回要发送的数据的长度或接收到的数据的长度。- 返回:
- 要发送的数据的长度或接收到的数据的长度。
- 参见:
-
setData
public void setData(byte[] buf, int offset, int length) 为此数据包设置数据缓冲区。这将设置数据包的数据、长度和偏移量。- 参数:
-
buf
- 要设置为此数据包的缓冲区 -
offset
- 数据的偏移量 -
length
- 数据的长度和/或用于接收数据的缓冲区的长度 - 抛出:
-
IllegalArgumentException
- 如果长度或偏移量为负,或者长度加偏移量大于数据包给定缓冲区的长度。 - 自版本:
- 1.2
- 参见:
-
setAddress
设置此数据报发送到的机器的IP地址。- 参数:
-
iaddr
-InetAddress
,或null
。 - 自版本:
- 1.1
- 参见:
-
setPort
public void setPort(int iport) 设置此数据报发送到的远程主机的端口号。- 参数:
-
iport
- 端口号 - 抛出:
-
IllegalArgumentException
- 如果端口超出范围 - 自版本:
- 1.1
- 参见:
-
setSocketAddress
设置此数据报发送到的远程主机的SocketAddress(通常是IP地址+端口号)。- 参数:
-
address
-SocketAddress
- 抛出:
-
IllegalArgumentException
- 如果地址为null或是不受支持的SocketAddress子类。 - 自版本:
- 1.4
- 参见:
-
getSocketAddress
- 返回:
-
SocketAddress
- 自版本:
- 1.4
- 参见:
-
setData
public void setData(byte[] buf) 设置此数据包的数据缓冲区。将此DatagramPacket的偏移量设置为0,并将长度设置为buf
的长度。- 参数:
-
buf
- 要设置为此数据包的缓冲区。 - 自版本:
- 1.1
- 参见:
-
setLength
public void setLength(int length) 设置此数据包的长度。数据包的长度是将要发送的数据包数据缓冲区中的字节数,或将用于接收数据的数据包数据缓冲区中的字节数。length
加上offset
必须小于或等于数据包数据缓冲区的长度。- 参数:
-
length
- 要设置为此数据包的长度。 - 抛出:
-
IllegalArgumentException
- 如果长度为负,或者长度加偏移量大于数据包数据缓冲区的长度。 - 自版本:
- 1.1
- 参见:
-