java.lang.Object
java.net.DatagramSocketImpl
- 所有已实现的接口:
-
SocketOptions
抽象数据报和多播套接字实现基类。
- 自从:
- 1.1
-
Field Summary
FieldsFields 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
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected abstract voidbind(int lport, InetAddress laddr) 将数据报套接字绑定到本地端口和地址。protected abstract voidclose()关闭套接字。protected voidconnect(InetAddress address, int port) 将数据报套接字连接到远程目的地。protected abstract voidcreate()创建数据报套接字。protected void从其远程目的地断开数据报套接字。protected FileDescriptor获取数据报套接字文件描述符。protected int获取本地端口。protected <T> TgetOption(SocketOption<T> name) 调用以获取套接字选项。protected abstract int检索TTL(生存时间)选项。protected abstract bytegetTTL()已弃用。请改用getTimeToLive。protected abstract voidjoin(InetAddress inetaddr) 加入多播组。protected abstract voidjoinGroup(SocketAddress mcastaddr, NetworkInterface netIf) 加入多播组。protected abstract voidleave(InetAddress inetaddr) 离开多播组。protected abstract voidleaveGroup(SocketAddress mcastaddr, NetworkInterface netIf) 离开多播组。protected abstract intpeek(InetAddress i) 查看数据包以查看其来源。protected abstract int查看数据包以查看其来源。protected abstract void接收数据报包。protected abstract void发送数据报包。protected <T> voidsetOption(SocketOption<T> name, T value) 调用以设置套接字选项。protected abstract voidsetTimeToLive(int ttl) 设置TTL(生存时间)选项。protected abstract voidsetTTL(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, waitMethods 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
-