DatagramSocketImpl
java.lang.Object
|—java.net.DatagramSocketImpl
public abstract class DatagramSocketImpl
extends Object
implements SocketOptions
抽象数据报和多播套接字实现基类。
字段摘要
修饰符和类型 | 方法 | 描述 |
---|---|---|
protected FileDescriptor | fd | 文件描述符对象。 |
protected int | localPort | 本地端口号。 |
从接口 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_SNDBUF, SO_TIMEOUT, TCP_NODELAY |
构造函数摘要
构造函数 | 描述 |
---|---|
DatagramSocketImpl() |
方法总结
修饰符和类型 | 方法 | 描述 |
---|---|---|
protected abstract void | bind(int lport, InetAddress laddr) | 将数据报套接字绑定到本地端口和地址。 |
protected abstract void | close() | 关闭插座。 |
protected void | connect(InetAddress address, int port) | 将数据报套接字连接到远程目标。 |
protected abstract void | create() | 创建一个数据报套接字。 |
protected void | disconnect() | 断开数据报套接字与其远程目标的连接。 |
protected FileDescriptor | getFileDescriptor() | 获取数据报套接字文件描述符。 |
protected int | getLocalPort() | 获取本地端口。 |
protected abstract int | getTimeToLive() | 检索 TTL(time-to-live)选项。 |
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 | peekData(DatagramPacket p) | 偷看包裹,看看它来自谁。 |
protected abstract void | receive(DatagramPacket p) | 接收数据报包。 |
protected abstract void | send(DatagramPacket p) | 发送一个数据报包。 |
protected abstract void | setTimeToLive(int ttl) | 设置 TTL(time-to-live)选项。 |
protected abstract void | setTTL(byte ttl) | 已弃用。 改用 setTimeToLive。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
从接口 java.net.SocketOptions 继承的方法 |
---|
getOption, setOption |
字段详细信息
fd
protected FileDescriptor fd
文件描述符对象。
localPort
protected int localPort
本地端口号。
构造函数详细信息
DatagramSocketImpl
public DatagramSocketImpl()
方法详情
create
protected abstract void create() throws SocketException
创建一个数据报套接字。
Throws:
Throw名称 | Throw描述 |
---|---|
SocketException | 如果底层协议有错误,例如 TCP 错误。 |
bind
protected abstract void bind(int lport, InetAddress laddr) throws SocketException
将数据报套接字绑定到本地端口和地址。
参数:
参数名称 | 参数描述 |
---|---|
lport | 本地端口 |
laddr | 本地地址 |
Throws:
Throw名称 | Throw描述 |
---|---|
SocketException | 如果底层协议有错误,例如 TCP 错误。 |
send
protected abstract void send(DatagramPacket p) throws IOException
发送一个数据报包。 数据包包含数据和要将数据包发送到的目标地址。
参数:
参数名称 | 参数描述 |
---|---|
p | 要发送的数据包。 |
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果在发送数据报包时发生 I/O 异常。 |
PortUnreachableException | 如果套接字连接到当前无法到达的目的地,则可能会抛出。 请注意,不能保证会引发异常。 |
connect
protected void connect(InetAddress address, int port) throws SocketException
将数据报套接字连接到远程目标。 这将远程地址与本地套接字相关联,以便数据报只能发送到该目的地并从该目的地接收。 这可能会被覆盖以调用本机系统连接。
如果套接字连接到的远程目标不存在,或者无法到达,并且如果已接收到该地址的 ICMP 目标无法到达数据包,则后续调用 send 或 receive 可能会抛出 PortUnreachableException。 请注意,不能保证会引发异常。
参数:
参数名称 | 参数描述 |
---|---|
address | 要连接的远程 InetAddress |
port | 远程端口号 |
Throws:
Throw名称 | Throw Description |
---|---|
SocketException | 如果套接字无法连接到远程目标,可能会抛出 |
disconnect
protected void disconnect()
断开数据报套接字与其远程目标的连接。
peek
protected abstract int peek(InetAddress i) throws IOException
偷看包裹,看看它来自谁。 将指定的 InetAddress 更新为数据包的来源地址。
参数:
参数名称 | 参数描述 |
---|---|
i | 一个 InetAddress 对象 |
返回:
数据包来自的端口号。
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果发生 I/O 异常 |
PortUnreachableException | 如果套接字连接到当前无法到达的目的地,则可能会抛出。 请注意,不能保证会引发异常。 |
peekData
protected abstract int peekData(DatagramPacket p) throws IOException
偷看包裹,看看它来自谁。 数据被复制到指定的 DatagramPacket 中。 数据被返回,但不被消费,因此后续的 peekData/receive 操作将看到相同的数据。
参数:
参数名称 | 参数描述 |
---|---|
p | 收到的数据包。 |
返回:
数据包来自的端口号。
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果发生 I/O 异常 |
PortUnreachableException | 如果套接字连接到当前无法到达的目的地,则可能会抛出。 请注意,不能保证会引发异常。 |
receive
protected abstract void receive(DatagramPacket p) throws IOException
接收数据报包。
参数:
参数名称 | 参数描述 |
---|---|
p | 收到的数据包。 |
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果在接收数据报包时发生 I/O 异常。 |
PortUnreachableException | 如果套接字连接到当前无法到达的目的地,则可能会抛出。 请注意,不能保证会引发异常。 |
setTTL
@Deprecated protected abstract void setTTL(byte ttl) throws IOException
已弃用。 改用 setTimeToLive。
设置 TTL (time-to-live) 选项。
参数:
参数名称 | 参数描述 |
---|---|
ttl | 指定 TTL 值的字节 |
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果在设置生存时间选项时发生 I/O 异常。 |
getTTL
@Deprecated protected abstract byte getTTL() throws IOException
已弃用。 改用 getTimeToLive。
检索 TTL (time-to-live) 选项。
返回:
表示 TTL 值的字节
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果在检索生存时间选项时发生 I/O 异常 |
setTimeToLive
protected abstract void setTimeToLive(int ttl) throws IOException
设置 TTL (time-to-live) 选项。
参数:
参数名称 | 参数描述 |
---|---|
ttl | 指定 time-to-live 值的 int |
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果在设置 time-to-live 选项时发生 I/O 异常。 |
getTimeToLive
protected abstract int getTimeToLive() throws IOException
检索 TTL (time-to-live) 选项。
返回:
表示生存时间值的 int
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果在检索生存时间选项时发生 I/O 异常 |
join
protected abstract void join(InetAddress inetaddr) throws IOException
加入多播组。
参数:
参数名称 | 参数描述 |
---|---|
inetaddr | 多播地址加入。 |
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果加入多播组时发生 I/O 异常。 |
leave
protected abstract void leave(InetAddress inetaddr) throws IOException
离开多播组。
参数:
参数名称 | 参数描述 |
---|---|
inetaddr | 离开的多播地址。 |
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果在离开多播组时发生 I/O 异常。 |
joinGroup
protected abstract void joinGroup(SocketAddress mcastaddr, NetworkInterface netIf) throws IOException
加入多播组。
参数:
参数名称 | 参数描述 |
---|---|
mcastaddr | 加入地址。 |
netIf | 指定接收多播数据报包的本地接口 |
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果加入多播组时发生 I/O 异常 |
leaveGroup
protected abstract void leaveGroup(SocketAddress mcastaddr, NetworkInterface netIf) throws IOException
离开多播组。
参数:
参数名称 | 参数描述 |
---|---|
mcastaddr | 离开的地址。 |
netIf | 指定离开组的本地接口 |
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果在离开多播组时发生 I/O 异常 |
close
protected abstract void close()
关闭套接字。
getLocalPort
protected int getLocalPort()
获取本地端口。
返回:
表示本地端口值的 int
getFileDescriptor
protected FileDescriptor getFileDescriptor()
获取数据报套接字文件描述符。
返回:
表示数据报套接字文件描述符的 FileDescriptor 对象