Properties |
---|
public boolean | isBound()
返回套接字的绑定状态。
return |
如果将套接字成功地绑定到一个地址,则返回 true | since | 1.4 |
|
public void | setBroadcast(boolean on) throws SocketException
启用/禁用 SO_BROADCAST。
|
public boolean | getBroadcast() throws SocketException
检测是否启用了 SO_BROADCAST。
|
public DatagramChannel | getChannel()
返回与此数据报套接字关联的唯一 java.nio.channels.DatagramChannel 对象(如果有)。 当且仅当通过 DatagramChannel.open 方法创建了通道本身时,数据报套接字才具有一个通道。
return |
与此数据报套接字关联的数据报通道,如果没有为通道创建套接字,则返回 null。 | since | 1.4 | spec | JSR-51 |
|
public boolean | isClosed()
返回是否关闭了套接字。
return |
如果已经关闭了套接字,则返回 true | since | 1.4 |
|
public boolean | isConnected()
返回套接字的连接状态。
return |
如果将套接字成功地连接到服务器,则为 true。 | since | 1.4 |
|
public static void | setDatagramSocketImplFactory(DatagramSocketImplFactory fac) throws IOException
为应用程序设置数据报套接字实现工厂。工厂只能指定一次。 当应用程序创建新的数据报套接字时,调用套接字实现工厂的 createDatagramSocketImpl 方法创建实际的数据报套接字实现。 除非已经设置了工厂,否则向该方法传递 null 是无操作。 如果存在安全管理器,此方法首先调用安全管理器的 checkSetFactory 方法,确保允许该操作。这可能会导致 SecurityException 异常。
|
public InetAddress | getInetAddress()
返回此套接字连接的地址。如果套接字未连接,则返回 null。
|
public InetAddress | getLocalAddress()
获取套接字绑定的本地地址。 如果存在安全管理器,则首先使用主机地址和 -1 作为参数调用其 checkConnect 方法,以查看是否允许该操作。
return |
套接字绑定的本地地址,如果套接字没有绑定或安全管理器的 checkConnect 方法不允许该操作,则返回表示任何本地地址的 InetAddress 。 | since | 1.1 | See also | checkConnect |
|
public int | getLocalPort()
返回此套接字绑定的本地主机上的端口号。
|
public SocketAddress | getLocalSocketAddress()
返回此套接字绑定的端点的地址,如果尚未绑定则返回 null 。
|
public int | getPort()
返回此套接字的端口。如果套接字未连接,则返回 -1。
|
public void | setReceiveBufferSize(int size) throws SocketException
将此 DatagramSocket 的 SO_RCVBUF 选项设置为指定的值。网络实现使用 SO_RCVBUF 选项作为设置底层网络 I/O 缓冲区大小的提示。网络实现也可以使用 SO_RCVBUF 设置来决定在此套接字上可以接收的包的最大大小。 由于 SO_RCVBUF 是一种提示,想要验证缓冲区设置大小的应用程序应该调用 #getReceiveBufferSize() 。 当包到达的速度快于使用 #receive(DatagramPacket) 接收包的速度时,增大 SO_RCVBUF 可以允许网络实现缓存多个包。 注:是否能接收大于 SO_RCVBUF 的包是特定于实现的。
|
public int | getReceiveBufferSize() throws SocketException
获取此 DatagramSocket 的 SO_RCVBUF 选项的值,该值是平台在 DatagramSocket 上输入时使用的缓冲区大小。
|
public SocketAddress | getRemoteSocketAddress()
返回此套接字连接的端点的地址,如果未连接则返回 null 。
|
public void | setReuseAddress(boolean on) throws SocketException
启用/禁用 SO_REUSEADDR 套接字选项。 对于 UDP 套接字可能有必要把超过一个的套接字绑定到相同的套接字地址。这样做的目的通常是为了接收多播包。(请参阅java.net.MulticastSocket )。如果在使用 #bind(SocketAddress) 绑定套接字之前启用 SO_REUSEADDR 套接字选项,则 SO_REUSEADDR 套接字选项允许将多个套接字绑定到相同的套结字地址。 注意:所有现有平台都不支持此功能,因此不管是否将忽略此选项,它都是特定于实现的。但是,如果此功能不受支持,则#getReuseAddress() 将始终返回 false 。 当创建 DatagramSocket 时,禁用 SO_REUSEADDR 的初始设置。 在绑定套接字(请参阅 #isBound() )后启用或禁用 SO_REUSEADDR 时的行为是不确定的。
|
public boolean | getReuseAddress() throws SocketException
检测是否启用了 SO_REUSEADDR。
|
public void | setSendBufferSize(int size) throws SocketException
将此 DatagramSocket 的 SO_SNDBUF 选项设置为指定的值。网络实现使用 SO_SNDBUF 选项作为设置底层网络 I/O 缓冲区大小的提示。网络实现也可以使用 SO_SNDBUF 设置来决定在此套接字上可以传送的包的最大大小。 由于 SO_SNDBUF 是一种提示,想要验证缓冲区大小的应用程序应该调用 #getSendBufferSize() 。 当发送率很高时,增大缓冲区的大小可以允许网络实现对多个传出包进行排队。 注:如果使用 #send(DatagramPacket) 来发送比 SO_SNDBUF 设置大的 DatagramPacket ,包是被发送还是被丢弃是特定于实现的。
|
public int | getSendBufferSize() throws SocketException
获取此 DatagramSocket 的 SO_SNDBUF 选项的值,该值是平台在 DatagramSocket 上输出时使用的缓冲区大小。
|
public void | setSoTimeout(int timeout) throws SocketException
启用/禁用带有指定超时值的 SO_TIMEOUT,以毫秒为单位。将此选项设为非零的超时值时,对此 DatagramSocket 调用 receive() 将只阻塞此时间长度。如果超过超时值,将引发 java.net.SocketTimeoutException,虽然 DatagramSocket 仍旧有效。选项必须在进入阻塞操作前被启用才能生效。超时值必须是 > 0 的数。超时值为 0 被解释为无穷大超时值。
|
public int | getSoTimeout() throws SocketException
获取 SO_TIMEOUT 的设置。返回 0 意味着禁用了选项(即无穷大的超时值)。
|
public void | setTrafficClass(int tc) throws SocketException
为从此 DatagramSocket 上发送的数据报在 IP 数据报头中设置流量类别 (traffic class) 或服务类型八位组 (type-of-service octet)。由于底层网络实现可能忽略此值,应用程序应该将其视为一种提示。 tc 的值必须在 0 <= tc <= 255 范围内,否则将抛出 IllegalArgumentException。 注: 对于 Internet Protocol v4 该值由包含优先级和 TOS 字段的八位组组成,这在 RFC 1349 中有详细叙述。TOS 字段是由以下逐位或所得值创建的位集:
IPTOS_LOWCOST (0x02) IPTOS_RELIABILITY (0x04) IPTOS_THROUGHPUT (0x08) IPTOS_LOWDELAY (0x10) 末尾的最低位常常被忽略,因为该位对应于 MBZ(必须为 0)位。 设置优先级字段中的位可能导致 SocketException,指示不允许该操作。 对于 Internet Protocol v6 tc 是将被放置到 IP 头部的 sin6_flowinfo 字段中的值。
|
public int | getTrafficClass() throws SocketException
为从此 DatagramSocket 上发送的包获取 IP 数据报头中的流量类别或服务类型。 由于底层网络实现可能忽略使用 #setTrafficClass(int) 设置的流量类别或服务类型,因而此方法可能返回一个不同于以前用#setTrafficClass(int) 在此 DatagramSocket 上设置的值。
|