Module java.base
Package java.net

Class DatagramPacket

java.lang.Object
java.net.DatagramPacket

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

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

除非另有规定,传递null参数会导致抛出NullPointerException

DatagramPacket的方法和构造函数接受类型为SocketAddress的参数。 DatagramPacket支持InetSocketAddress,并且可能支持其他SocketAddress子类型。

自:
1.0
  • Constructor Summary

    Constructors
    Constructor
    Description
    DatagramPacket(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 Type
    Method
    Description
    返回此数据报发送到的机器的IP地址或接收到数据报的机器的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地址 + 端口号)。

    Methods declared in class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 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

      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 - 如果地址为null或其类型不受支持,或者长度或偏移量为负数,或者长度加偏移量大于给定缓冲区的数据包长度。
      自:
      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 - 如果地址为null或其类型不受支持,或者长度为负数,或者长度大于给定缓冲区的数据包长度,或者端口号超出范围。
      自:
      1.4
      参见:
  • Method Details

    • getAddress

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

      public void setAddress(InetAddress iaddr)
      设置此数据报发送到的机器的IP地址。
      参数:
      iaddr - InetAddress,或null
      自版本:
      1.1
      参见:
    • setPort

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

      public void setSocketAddress(SocketAddress address)
      设置此数据报发送到的远程主机的SocketAddress(通常是IP地址+端口号)。
      参数:
      address - SocketAddress
      抛出:
      IllegalArgumentException - 如果地址为null或是不受支持的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
      参见: