所有类


java.net
类 DatagramSocket

java.lang.Object
  继承者 java.net.DatagramSocket
直接已知子类:
MulticastSocket

public class DatagramSocket
   
   
   
   
   
extends Object

此类表示用来发送和接收数据报包的套接字。

数据报套接字是包投递服务的发送或接收点。每个在数据报套接字上发送或接收的包都是单独编址和路由的。从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到达。

在 DatagramSocket 上总是启用 UDP 广播发送。为了接收广播包,应该将 DatagramSocket 绑定到通配符地址。在某些实现中,将 DatagramSocket 绑定到一个更加具体的地址时广播包也可以被接收。

示例:DatagramSocket s = new DatagramSocket(null); s.bind(new InetSocketAddress(8888)); 这等价于:DatagramSocket s = new DatagramSocket(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)。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

DatagramSocket

public DatagramSocket()
               throws SocketException
构造数据报套接字并将其绑定到本地主机上任何可用的端口。套接字将被绑定到通配符地址,IP 地址由内核来选择。

如果有安全管理器,则首先使用 0 作为变量来调用其 checkListen 方法,以确保允许该操作。这可能会导致 SecurityException 异常。

抛出:
SocketException - 如果套接字不能被打开,或不能将其绑定到指定的本地端口。
SecurityException - 如果安全管理器存在并且其 checkListen 方法不允许进行该操作。
另请参见:
SecurityManager.checkListen(int)

DatagramSocket

protected DatagramSocket(DatagramSocketImpl impl)
创建带有指定 DatagramSocketImpl 的未绑定数据报套接字。

参数:
impl - 子类希望在 DatagramSocket 上使用的 DatagramSocketImpl 的实例。
从以下版本开始:
1.4

DatagramSocket

public DatagramSocket(SocketAddress bindaddr)
               throws SocketException
创建数据报套接字,将其绑定到指定的本地套接字地址。

如果地址为 null,创建未绑定的套接字。

如果有安全管理器,则首先使用套接字中的端口作为变量来调用其 checkListen 方法,以确保允许该操作。这可能会导致 SecurityException 异常。

参数:
bindaddr - 要绑定的本地套接字地址,对于未绑定的套接字为 null
抛出:
SocketException - 如果套接字不能被打开,或不能将其绑定到指定的本地端口。
SecurityException - 如果安全管理器存在并且其 checkListen 方法不允许进行该操作。
从以下版本开始:
1.4
另请参见:
SecurityManager.checkListen(int)

DatagramSocket

public DatagramSocket(int port)
               throws SocketException
创建数据报套接字并将其绑定到本地主机上的指定端口。套接字将被绑定到通配符地址,IP 地址由内核来选择。

如果存在安全管理器,则首先使用 port 参数作为参数调用其 checkListen 方法,以确保允许该操作。这可能会导致 SecurityException 异常。

参数:
port - 要使用的端口。
抛出:
SocketException - 如果套接字不能被打开,或不能将其绑定到指定的本地端口。
SecurityException - 如果安全管理器存在并且其 checkListen 方法不允许进行该操作。
另请参见:
SecurityManager.checkListen(int)

DatagramSocket

public DatagramSocket(int port,
                      InetAddress laddr)
               throws SocketException
创建数据报套接字,将其绑定到指定的本地地址。本地端口必须在 0 到 65535 之间(包括两者)。如果 IP 地址为 0.0.0.0,套接字将被绑定到通配符地址,IP 地址由内核选择。

如果存在安全管理器,则首先使用 port 参数作为参数调用其 checkListen 方法,以确保允许该操作。这可能会导致 SecurityException 异常。

参数:
port - 要使用的本地端口
laddr - 要绑定的本地地址
抛出:
SocketException - 如果套接字不能被打开,或不能将其绑定到指定的本地端口。
SecurityException - 如果安全管理器存在并且其 checkListen 方法不允许进行该操作。
从以下版本开始:
JDK1.1
另请参见:
SecurityManager.checkListen(int)
方法详细信息

bind

public void bind(SocketAddress addr)
          throws SocketException
将此 DatagramSocket 绑定到特定的地址和端口。

如果地址为 null,则系统将挑选一个临时端口和一个有效本地地址来绑定套接字。

参数:
addr - 要绑定的地址和端口。
抛出:
SocketException - 如果绑定过程中发生错误,或者套接字已经被绑定。
SecurityException - 如果安全管理器存在并且其 checkListen 方法不允许进行该操作。
IllegalArgumentException - 如果 addr 是不受此套接字支持的 SocketAddress 子类。
从以下版本开始:
1.4

connect

public void connect(InetAddress address,
                    int port)
将套接字连接到此套接字的远程地址。当套接字连接到远程地址时,包就只能从该地址发送或接收。默认情况下不连接数据报套接字。

如果套接字要连接的远程目标不存在或不可到达,并且收到了该地址的目标不可达 ICMP 包,那么后续发送和接收的调用可能会抛出 PortUnreachableException。注意,不能保证一定抛出该异常。

在连接时检查调用方对给定主机和端口的发送和接收数据报权限。当连接建立起来后,接收和发送除了对包和套接字的地址和端口进行匹配外,对传入和传出的包将不再执行任何安全性检查。对于发送操作,如果设置了包的地址并且包的地址和套接字的地址不匹配,则将抛出 IllegalArgumentException。连接到多播地址的套接字只能用于发送包。

参数:
address - 套接字的远程地址。
port - 套接字的远程端口。
抛出:
IllegalArgumentException - 如果地址为 null,或端口超出了范围。
SecurityException - 如果不允许调用方向此地址和端口发送也不允许从此地址接收数据报。
另请参见:
disconnect(), send(java.net.DatagramPacket), receive(java.net.DatagramPacket)

connect

public void connect(SocketAddress addr)
             throws SocketException
将此套接字连接到远程套接字地址(IP 地址 + 端口号)。

参数:
addr - 远程地址。
抛出:
SocketException - 如果连接失败
IllegalArgumentException - 如果 addr 为 null 或者 addr 是不受此套接字支持的 SocketAddress 子类。
从以下版本开始:
1.4
另请参见:
connect(java.net.InetAddress, int)

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部