java-面向连接数据包socket api

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

类 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)。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值