类 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)。 |
理解DatagramSocket类及其应用
本文深入探讨了DatagramSocket类的特性,包括其作为面向连接数据包的使用方式,以及如何通过bind、connect、disconnect等方法进行绑定、连接和断开操作。同时介绍了DatagramSocket类的构造方法、绑定方法、接收和发送数据包的方法,以及关键属性如端口、缓冲区大小等。此外,文章还提供了实例代码,帮助读者快速上手。
920

被折叠的 条评论
为什么被折叠?



