模块 java.base
 java.net

类 DatagramPacket

java.lang.Object
java.net.DatagramPacket

public final class DatagramPacket extends Object
此类表示数据报包。

数据报包用于实现无连接的包传送服务。每条消息仅根据该数据包中包含的信息从一台机器路由到另一台机器。从一台机器发送到另一台机器的多个数据包可能会有不同的路由,并且可能以任何顺序到达。不保证数据包交付。

除非另有说明,否则传递 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[]
    返回数据缓冲区。
    int
    返回要发送的数据的长度或接收到的数据的长度。
    int
    返回要发送的数据的偏移量或接收到的数据的偏移量。
    int
    返回将此数据报发送到的远程主机上的端口号或从中接收数据报的端口号,如果未设置则返回 0。
    返回此数据包发送到或来自的远程主机的 SocketAddress (通常为 IP地址 + 端口号)。
    void
    设置要将此数据报发送到的机器的 IP 地址。
    void
    setData(byte[] buf)
    为此数据包设置数据缓冲区。
    void
    setData(byte[] buf, int offset, int length)
    为此数据包设置数据缓冲区。
    void
    setLength(int length)
    设置此数据包的长度。
    void
    setPort(int iport)
    设置要将此数据报发送到的远程主机上的端口号。
    void
    设置要将此数据报发送到的远程主机的 SocketAddress(通常是 IP 地址 + 端口号)。

    在类 java.lang.Object 中声明的方法

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 构造方法详细信息

    • 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

      public DatagramPacket(byte[] buf, int offset, int length, InetAddress  address, int port)
      构造一个数据报包,用于将长度为 length、偏移量为 offset 的数据包发送到指定主机上的指定端口号。 length 参数必须小于或等于 buf.length
      参数:
      buf - 数据包数据。
      offset - 数据包数据偏移量。
      length - 数据包数据长度。
      address - 目标地址,或 null
      port - 目标端口号。
      抛出:
      IllegalArgumentException - 如果长度或偏移量为负,或者长度加上偏移量大于数据包给定缓冲区的长度,或者端口超出范围。
      自从:
      1.2
      参见:
    • DatagramPacket

      public DatagramPacket(byte[] buf, int offset, int length, SocketAddress  address)
      构造一个数据报包,用于将长度为 length、偏移量为 offset 的数据包发送到指定主机上的指定端口号。 length 参数必须小于或等于 buf.length
      参数:
      buf - 数据包数据。
      offset - 数据包数据偏移量。
      length - 数据包数据长度。
      address - 目标套接字地址。
      抛出:
      IllegalArgumentException - 如果地址为空或其类型不受支持,或者如果长度或偏移量为负数,或者如果长度加上偏移量大于数据包给定缓冲区的长度。
      自从:
      1.4
      参见:
    • DatagramPacket

      public DatagramPacket(byte[] buf, int length, InetAddress  address, int port)
      构造一个数据报包,用于将长度为 length 的数据包发送到指定主机上的指定端口号。 length 参数必须小于或等于 buf.length
      参数:
      buf - 数据包数据。
      length - 数据包长度。
      address - 目标地址,或 null
      port - 目标端口号。
      抛出:
      IllegalArgumentException - 如果长度为负,或者长度大于数据包给定缓冲区的长度,或者端口超出范围。
      参见:
    • DatagramPacket

      public DatagramPacket(byte[] buf, int length, SocketAddress  address)
      构造一个数据报包,用于将长度为 length 的数据包发送到指定主机上的指定端口号。 length 参数必须小于或等于 buf.length
      参数:
      buf - 数据包数据。
      length - 数据包长度。
      address - 目标地址。
      抛出:
      IllegalArgumentException - 如果地址为空或其类型不受支持,或者长度为负,或者长度大于数据包给定缓冲区的长度,或者端口超出范围。
      自从:
      1.4
      参见:
  • 方法详情

    • getAddress

      public InetAddress  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

      public void setAddress(InetAddress  iaddr)
      设置要将此数据报发送到的机器的 IP 地址。
      参数:
      iaddr - InetAddressnull
      自从:
      1.1
      参见:
    • setPort

      public void setPort(int iport)
      设置要将此数据报发送到的远程主机上的端口号。
      参数:
      iport - 端口号
      抛出:
      IllegalArgumentException - 如果端口超出范围
      自从:
      1.1
      参见:
    • setSocketAddress

      public void setSocketAddress(SocketAddress  address)
      设置要将此数据报发送到的远程主机的 SocketAddress(通常是 IP 地址 + 端口号)。
      参数:
      address - SocketAddress
      抛出:
      IllegalArgumentException - 如果地址为空或者是不支持的 SocketAddress 子类。
      自从:
      1.4
      参见:
    • getSocketAddress

      public SocketAddress  getSocketAddress()
      返回此数据包发送到或来自的远程主机的 SocketAddress (通常为 IP地址 + 端口号)。
      返回:
      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
      参见: