java.lang.Object
java.net.DatagramPacket
此类表示数据报包。
数据报包用于实现无连接的包传送服务。每条消息仅根据该数据包中包含的信息从一台机器路由到另一台机器。从一台机器发送到另一台机器的多个数据包可能会有不同的路由,并且可能以任何顺序到达。不保证数据包交付。
除非另有说明,否则传递 null 参数会导致抛出 NullPointerException 。
DatagramPacket 的方法和构造函数接受类型为 SocketAddress 的参数。 DatagramPacket 支持 InetSocketAddress ,并可能支持其他 SocketAddress 子类型。
- 自从:
- 1.0
-
构造方法总结
构造方法构造方法描述DatagramPacket(byte[] buf, int length) 构造一个DatagramPacket用于接收长度为length的数据包。DatagramPacket(byte[] buf, int offset, int length) 构造一个DatagramPacket用于接收长度为length的数据包,指定缓冲区中的偏移量。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的数据包发送到指定主机上的指定端口号。 -
方法总结
修饰符和类型方法描述返回此数据报发送到的机器或从中接收数据报的机器的 IP 地址,如果未设置,则返回null。byte[]getData()返回数据缓冲区。int返回要发送的数据的长度或接收到的数据的长度。int返回要发送的数据的偏移量或接收到的数据的偏移量。intgetPort()返回将此数据报发送到的远程主机上的端口号或从中接收数据报的端口号,如果未设置则返回 0。voidsetAddress(InetAddress iaddr) 设置要将此数据报发送到的机器的 IP 地址。voidsetData(byte[] buf) 为此数据包设置数据缓冲区。voidsetData(byte[] buf, int offset, int length) 为此数据包设置数据缓冲区。voidsetLength(int length) 设置此数据包的长度。voidsetPort(int iport) 设置要将此数据报发送到的远程主机上的端口号。voidsetSocketAddress(SocketAddress address) 设置要将此数据报发送到的远程主机的 SocketAddress(通常是 IP 地址 + 端口号)。
-
构造方法详细信息
-
DatagramPacket
public DatagramPacket(byte[] buf, int offset, int length) 构造一个DatagramPacket用于接收长度为length的数据包,指定缓冲区中的偏移量。length参数必须小于或等于buf.length。- 参数:
buf- 用于保存传入数据报的缓冲区。offset- 缓冲区的偏移量length- 要读取的字节数。- 抛出:
IllegalArgumentException- 如果长度或偏移量为负,或者如果长度加上偏移量大于数据包给定缓冲区的长度。- 自从:
- 1.2
-
DatagramPacket
public DatagramPacket(byte[] buf, int length) 构造一个DatagramPacket用于接收长度为length的数据包。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- 如果地址为空或其类型不受支持,或者如果长度或偏移量为负数,或者如果长度加上偏移量大于数据包给定缓冲区的长度。- 自从:
- 1.4
- 参见:
-
DatagramPacket
构造一个数据报包,用于将长度为length的数据包发送到指定主机上的指定端口号。length参数必须小于或等于buf.length。- 参数:
buf- 数据包数据。length- 数据包长度。address- 目标地址,或null。port- 目标端口号。- 抛出:
IllegalArgumentException- 如果长度为负,或者长度大于数据包给定缓冲区的长度,或者端口超出范围。- 参见:
-
DatagramPacket
构造一个数据报包,用于将长度为length的数据包发送到指定主机上的指定端口号。length参数必须小于或等于buf.length。- 参数:
buf- 数据包数据。length- 数据包长度。address- 目标地址。- 抛出:
IllegalArgumentException- 如果地址为空或其类型不受支持,或者长度为负,或者长度大于数据包给定缓冲区的长度,或者端口超出范围。- 自从:
- 1.4
- 参见:
-
-
方法详情
-
getAddress
返回此数据报发送到的机器或从中接收数据报的机器的 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- 如果地址为空或者是不支持的 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
- 参见:
-