java.lang.Object
java.net.DatagramSocketImpl
- 所有已实现的接口:
-
SocketOptions
抽象数据报和多播套接字实现基类。
- 自从:
- 1.1
-
Field Summary
Fields declared in interface java.net.SocketOptions
IP_MULTICAST_IF, IP_MULTICAST_IF2, IP_MULTICAST_LOOP, IP_TOS, SO_BINDADDR, SO_BROADCAST, SO_KEEPALIVE, SO_LINGER, SO_OOBINLINE, SO_RCVBUF, SO_REUSEADDR, SO_REUSEPORT, SO_SNDBUF, SO_TIMEOUT, TCP_NODELAY
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected abstract void
bind
(int lport, InetAddress laddr) 将数据报套接字绑定到本地端口和地址。protected abstract void
close()
关闭套接字。protected void
connect
(InetAddress address, int port) 将数据报套接字连接到远程目的地。protected abstract void
create()
创建数据报套接字。protected void
从其远程目的地断开数据报套接字。protected FileDescriptor
获取数据报套接字文件描述符。protected int
获取本地端口。protected <T> T
getOption
(SocketOption<T> name) 调用以获取套接字选项。protected abstract int
检索TTL(生存时间)选项。protected abstract byte
getTTL()
已弃用。请改用getTimeToLive。protected abstract void
join
(InetAddress inetaddr) 加入多播组。protected abstract void
joinGroup
(SocketAddress mcastaddr, NetworkInterface netIf) 加入多播组。protected abstract void
leave
(InetAddress inetaddr) 离开多播组。protected abstract void
leaveGroup
(SocketAddress mcastaddr, NetworkInterface netIf) 离开多播组。protected abstract int
peek
(InetAddress i) 查看数据包以查看其来源。protected abstract int
查看数据包以查看其来源。protected abstract void
接收数据报包。protected abstract void
发送数据报包。protected <T> void
setOption
(SocketOption<T> name, T value) 调用以设置套接字选项。protected abstract void
setTimeToLive
(int ttl) 设置TTL(生存时间)选项。protected abstract void
setTTL
(byte ttl) 已弃用。请改用setTimeToLive。protected Set
<SocketOption<?>> 返回此实现和此实现的套接字(DatagramSocket或MulticastSocket)支持的SocketOptions集合。Methods declared in class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods declared in interface java.net.SocketOptions
getOption, setOption
-
Field Details
-
localPort
protected int localPort本地端口号。 -
fd
文件描述符对象。
-
-
Constructor Details
-
DatagramSocketImpl
public DatagramSocketImpl()供子类调用的构造函数。
-
-
Method Details
-
create
创建数据报套接字。- 抛出:
-
SocketException
- 如果底层协议中存在错误,例如TCP错误。
-
bind
将数据报套接字绑定到本地端口和地址。- 参数:
-
lport
- 本地端口 -
laddr
- 本地地址 - 抛出:
-
SocketException
- 如果底层协议中存在错误,例如TCP错误。
-
send
发送数据报包。数据包包含要发送的数据和目标地址。- 参数:
-
p
- 要发送的数据包。 - 抛出:
-
IOException
- 发送数据报包时发生I/O异常。 -
PortUnreachableException
- 如果套接字连接到当前无法访问的目的地,则可能会抛出异常。请注意,并不保证会抛出异常。
-
connect
将数据报套接字连接到远程目的地。这将远程地址与本地套接字关联,以便只能向该目的地发送数据报并从该目的地接收数据报。这可能会被覆盖以调用本地系统连接。如果套接字连接到的远程目的地不存在或无法访问,并且如果已为该地址接收到ICMP目的地不可达数据包,则随后的发送或接收调用可能会引发PortUnreachableException。请注意,并不保证会抛出异常。
- 实现要求:
-
此方法的默认实现会抛出
SocketException
。 - 参数:
-
address
- 要连接的远程InetAddress -
port
- 远程端口号 - 抛出:
-
SocketException
- 如果无法将套接字连接到远程目的地 - 自从:
- 1.4
-
disconnect
protected void disconnect()从其远程目的地断开数据报套接字。- 实现要求:
-
此方法的默认实现会抛出
UncheckedIOException
。 - 抛出:
-
UncheckedIOException
- 如果断开连接失败或未提供实现 - 自从:
- 1.4
-
peek
查看数据包以查看其来源。将指定的InetAddress
更新为数据包的来源地址。- 参数:
-
i
- InetAddress对象 - 返回:
- 数据包的来源端口号。
- 抛出:
-
IOException
- 如果发生I/O异常 -
PortUnreachableException
- 如果套接字连接到当前无法访问的目的地,则可能会抛出异常。请注意,并不保证会抛出异常。
-
peekData
查看数据包以查看其来源。数据将被复制到指定的DatagramPacket
中。数据将被返回,但不会被消耗,因此随后的peekData/receive操作将看到相同的数据。- 参数:
-
p
- 接收到的数据包。 - 返回:
- 数据包的来源端口号。
- 抛出:
-
IOException
- 如果发生I/O异常 -
PortUnreachableException
- 如果套接字连接到当前无法访问的目的地,则可能会抛出异常。请注意,并不保证会抛出异常。 - 自从:
- 1.4
-
receive
接收数据报包。- 参数:
-
p
- 接收到的数据包。 - 抛出:
-
IOException
- 接收数据报包时发生I/O异常。 -
PortUnreachableException
- 如果套接字连接到当前无法访问的目的地,则可能会抛出异常。请注意,并不保证会抛出异常。
-
setTTL
Deprecated.use setTimeToLive instead.设置TTL(生存时间)选项。- 参数:
-
ttl
- 指定TTL值的字节 - 抛出:
-
IOException
- 设置生存时间选项时发生I/O异常。 - 参见:
-
getTTL
Deprecated.use getTimeToLive instead.检索TTL(生存时间)选项。- 返回:
- 表示TTL值的字节
- 抛出:
-
IOException
- 检索生存时间选项时发生I/O异常 - 参见:
-
setTimeToLive
设置TTL(生存时间)选项。- 参数:
-
ttl
- 指定生存时间值的int
- 抛出:
-
IOException
- 设置生存时间选项时发生I/O异常。 - 参见:
-
getTimeToLive
检索TTL(生存时间)选项。- 返回:
-
表示生存时间值的
int
- 抛出:
-
IOException
- 检索生存时间选项时发生I/O异常 - 参见:
-
join
加入多播组。- 参数:
-
inetaddr
- 要加入的多播地址。 - 抛出:
-
IOException
- 加入多播组时发生I/O异常。
-
leave
离开多播组。- 参数:
-
inetaddr
- 要离开的多播地址。 - 抛出:
-
IOException
- 离开多播组时发生I/O异常。
-
joinGroup
protected abstract void joinGroup(SocketAddress mcastaddr, NetworkInterface netIf) throws IOException 加入多播组。- 参数:
-
mcastaddr
- 要加入的地址。 -
netIf
- 指定接收多播数据报包的本地接口 - 抛出:
-
IOException
- 加入多播组时发生I/O异常 - 自从:
- 1.4
-
leaveGroup
protected abstract void leaveGroup(SocketAddress mcastaddr, NetworkInterface netIf) throws IOException 离开多播组。- 参数:
-
mcastaddr
- 要离开的地址。 -
netIf
- 指定要在其中离开组的本地接口 - 抛出:
-
IOException
- 离开多播组时发生I/O异常 - 自从:
- 1.4
-
close
protected abstract void close()关闭套接字。 -
getLocalPort
protected int getLocalPort()获取本地端口。- 返回:
-
表示本地端口值的
int
-
getFileDescriptor
获取数据报套接字文件描述符。- 返回值:
-
一个代表数据报套接字文件描述符的
FileDescriptor
对象
-
setOption
用于设置套接字选项。- 实现要求:
-
此方法的默认实现首先检查给定的套接字选项
name
不为null,然后抛出UnsupportedOperationException
。子类应该用适当的实现重写此方法。 - 类型参数:
-
T
- 套接字选项值的类型 - 参数:
-
name
- 套接字选项 -
value
- 套接字选项的值。对于某些选项,值为null
可能是有效的。 - 抛出:
-
UnsupportedOperationException
- 如果DatagramSocketImpl不支持该选项 -
IllegalArgumentException
- 如果值对于该选项无效 -
IOException
- 如果发生I/O错误,或者套接字已关闭 -
NullPointerException
- 如果name为null
- 自版本:
- 9
-
getOption
用于获取套接字选项。- 实现要求:
-
此方法的默认实现首先检查给定的套接字选项
name
不为null,然后抛出UnsupportedOperationException
。子类应该用适当的实现重写此方法。 - 类型参数:
-
T
- 套接字选项值的类型 - 参数:
-
name
- 套接字选项 - 返回值:
- 套接字选项
- 抛出:
-
UnsupportedOperationException
- 如果DatagramSocketImpl不支持该选项 -
IOException
- 如果发生I/O错误,或者套接字已关闭 -
NullPointerException
- 如果name为null
- 自版本:
- 9
-
supportedOptions
返回此实现和此实现的套接字(DatagramSocket或MulticastSocket)支持的SocketOptions集合- 实现要求:
- 此方法的默认实现返回一个空集合。子类应该用适当的实现重写此方法。
- 返回值:
- 一个SocketOptions集合
- 自版本:
- 9
-