类 DatagramSocket
可以做为面向连接数据包使用,但是很少使用,一般使用流SOCKET
void |
connect(InetAddress address,int port) 将套接字连接到此套接字的远程地址。 |
void |
connect(SocketAddress addr) 将此套接字连接到远程套接字地址(IP地址 + 端口号)。 |
这2个方法说明了该类可做为面向连接
java.lang.Object java.net.DatagramSocket
-
直接已知子类:
- MulticastSocket
-
public class DatagramSocket
extends Object
此类表示用来发送和接收数据报包的套接字。
数据报套接字是包投递服务的发送或接收点。每个在数据报套接字上发送或接收的包都是单独编址和路由的。从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到达。
在 DatagramSocket 上总是启用 UDP 广播发送。为了接收广播包,应该将 DatagramSocket绑定到通配符地址。在某些实现中,将 DatagramSocket 绑定到一个更加具体的地址时广播包也可以被接收。
示例:DatagramSocket s = new DatagramSocket(null); s.bind(newInetSocketAddress(8888));
这等价于:DatagramSocket s = newDatagramSocket(8888);
两个例子都能创建能够在 UDP 8888 端口上接收广播的DatagramSocket。
-
从以下版本开始:
- JDK1.0 另请参见:
-
DatagramPacket
,DatagramChannel
构造方法摘要 | |
---|---|
|
DatagramSocket() 构造数据报套接字并将其绑定到本地主机上任何可用的端口。 |
protected |
DatagramSocket(DatagramSocketImpl impl) 创建带有指定DatagramSocketImpl 的未绑定数据报套接字。 |
|
DatagramSocket(int port) 创建数据报套接字并将其绑定到本地主机上的指定端口。 |
|
DatagramSocket(int port, InetAddress laddr) 创建数据报套接字,将其绑定到指定的本地地址。 |
|
DatagramSocket(SocketAddress bindaddr) 创建数据报套接字,将其绑定到指定的本地套接字地址。 |
方法摘要 | |
---|---|
void |
bind(SocketAddress addr) 将此DatagramSocket 绑定到特定的地址和端口。 |
void |
close() 关闭此数据报套接字。 |
void |
connect(InetAddress address,int port) 将套接字连接到此套接字的远程地址。 |
void |
connect(SocketAddress addr) 将此套接字连接到远程套接字地址(IP地址 + 端口号)。 |
void |
disconnect() 断开套接字的连接。 |
boolean |
getBroadcast() 检测是否启用了SO_BROADCAST。 |
DatagramChannel |
getChannel() 返回与此数据报套接字关联的唯一 DatagramChannel 对象(如果有)。 |
InetAddress |
getInetAddress() 返回此套接字连接的地址。 |
InetAddress |
getLocalAddress() 获取套接字绑定的本地地址。 |
int |
getLocalPort() 返回此套接字绑定的本地主机上的端口号。 |
SocketAddress |
getLocalSocketAddress() 返回此套接字绑定的端点的地址,如果尚未绑定则返回 null 。 |
int |
getPort() 返回此套接字的端口。 |
int |
getReceiveBufferSize() 获取此DatagramSocket 的 SO_RCVBUF 选项的值,该值是平台在DatagramSocket 上输入时使用的缓冲区大小。 |
SocketAddress |
getRemoteSocketAddress() 返回此套接字连接的端点的地址,如果未连接则返回 null 。 |
boolean |
getReuseAddress() 检测是否启用了SO_REUSEADDR。 |
int |
getSendBufferSize() 获取此DatagramSocket 的 SO_SNDBUF 选项的值,该值是平台在DatagramSocket 上输出时使用的缓冲区大小。 |
int |
getSoTimeout() 获取SO_TIMEOUT 的设置。 |
int |
getTrafficClass() 为从此DatagramSocket 上发送的包获取 IP 数据报头中的流量类别或服务类型。 |
boolean |
isBound() 返回套接字的绑定状态。 |
boolean |
isClosed() 返回是否关闭了套接字。 |
boolean |
isConnected() 返回套接字的连接状态。 |
void |
receive(DatagramPacket p) 从此套接字接收数据报包。 |
void |
send(DatagramPacket p) 从此套接字发送数据报包。 |
void |
setBroadcast(boolean on) 启用/禁用SO_BROADCAST。 |
static void |
setDatagramSocketImplFactory(DatagramSocketImplFactory fac) 为应用程序设置数据报套接字实现工厂。 |
void |
setReceiveBufferSize(int size) 将此DatagramSocket 的 SO_RCVBUF 选项设置为指定的值。 |
void |
setReuseAddress(boolean on) 启用/禁用SO_REUSEADDR 套接字选项。 |
void |
setSendBufferSize(int size) 将此DatagramSocket 的 SO_SNDBUF 选项设置为指定的值。 |
void |
setSoTimeout(int timeout) 启用/禁用带有指定超时值的SO_TIMEOUT,以毫秒为单位。 |
void |
setTrafficClass(int tc) 为从此DatagramSocket 上发送的数据报在 IP 数据报头中设置流量类别 (traffic class) 或服务类型八位组(type-of-service octet)。 |