MulticastSocket 类

定义

多播数据报套接字类可用于发送和接收 IP 多播数据包。

[Android.Runtime.Register("java/net/MulticastSocket", DoNotGenerateAcw=true)]
public class MulticastSocket : Java.Net.DatagramSocket
[<Android.Runtime.Register("java/net/MulticastSocket", DoNotGenerateAcw=true)>]
type MulticastSocket = class
    inherit DatagramSocket
继承
MulticastSocket
属性

注解

多播数据报套接字类可用于发送和接收 IP 多播数据包。 MulticastSocket 是一个 (UDP) DatagramSocket,具有用于联接 Internet 上其他多播主机的“组”的其他功能。

多播组由类 D IP 地址和标准 UDP 端口号指定。 类 D IP 地址在范围224.0.0.0239.255.255.255中(含)。 地址 224.0.0.0 保留,不应使用。

首先使用所需端口创建 MulticastSocket,然后调用 joinGroup(InetAddress groupAddr) 该方法,将加入多播组:

// join a Multicast group and send the group salutations
            ...
            String msg = "Hello";
            InetAddress group = InetAddress.getByName("228.5.6.7");
            MulticastSocket s = new MulticastSocket(6789);
            s.joinGroup(group);
            byte[] bytes = msg.getBytes(StandardCharsets.UTF_8);
            DatagramPacket hi = new DatagramPacket(bytes, bytes.length,
                                        group, 6789);
            s.send(hi);
            // get their responses!
            byte[] buf = new byte[1000];
            DatagramPacket recv = new DatagramPacket(buf, buf.length);
            s.receive(recv);
            ...
            // OK, I'm done talking - leave the group...
            s.leaveGroup(group);

当一个向多播组发送消息时, <B>所有</B> 订阅该主机和端口的收件人接收消息(在数据包的生存时间范围内,请参阅下文)。 套接字不需要是多播组的成员才能向其发送消息。

当套接字订阅多播组/端口时,它接收由其他主机发送到组/端口的数据报,组和端口的所有其他成员也一样。 套接字通过 leaveGroup(InetAddress addr) 方法放弃组中的成员身份。 <B> 多个多播Socket 的</B> 可以同时订阅多播组和端口,它们都将接收组数据报。

目前不允许小程序使用多播套接字。

在 1.1 中添加。

Java文档java.net.MulticastSocket

本页的某些部分是根据 创建和共享的工作进行的修改,并根据 许可证中所述的条款使用。

构造函数

名称 说明
MulticastSocket()

创建多播套接字。

MulticastSocket(Int32)

创建多播套接字并将其绑定到特定端口。

MulticastSocket(IntPtr, JniHandleOwnership)

创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。

MulticastSocket(SocketAddress)

创建绑定到指定套接字地址的多播Socket。

属性

名称 说明
Broadcast

测试是否启用了SO_BROADCAST。 -或- 启用/禁用SO_BROADCAST。

(继承自 DatagramSocket)
Channel

返回与此数据报套接字关联的唯 java.nio.channels.DatagramChannel 一对象(如果有)。

(继承自 DatagramSocket)
Class

返回此 Object的运行时类。

(继承自 Object)
Handle

基础 Android 实例的句柄。

(继承自 Object)
InetAddress

返回此套接字连接到的地址。

(继承自 DatagramSocket)
Interface

检索用于多播数据包的网络接口的地址。 - 或 - 设置由其行为受网络接口值影响的方法使用的多播网络接口。

IsBound

返回套接字的绑定状态。

(继承自 DatagramSocket)
IsClosed

返回套接字是否已关闭。

(继承自 DatagramSocket)
IsConnected

返回套接字的连接状态。

(继承自 DatagramSocket)
JniIdentityHashCode

多播数据报套接字类可用于发送和接收 IP 多播数据包。

(继承自 Object)
JniPeerMembers

多播数据报套接字类可用于发送和接收 IP 多播数据包。

LocalAddress

获取套接字绑定到的本地地址。

(继承自 DatagramSocket)
LocalPort

返回此套接字绑定到的本地主机上的端口号。

(继承自 DatagramSocket)
LocalSocketAddress

返回此套接字绑定到的终结点的地址。

(继承自 DatagramSocket)
LoopbackMode

获取多播数据报的本地环回设置。 - 或 - 禁用/启用多播数据报的本地环回。平台的网络代码将此选项用作设置多播数据是否将循环回本地套接字的提示。

NetworkInterface

获取多播网络接口集。 - 或 - 为此套接字上发送的传出多播数据报指定网络接口。

PeerReference

多播数据报套接字类可用于发送和接收 IP 多播数据包。

(继承自 Object)
Port

返回此套接字连接到的端口号。

(继承自 DatagramSocket)
ReceiveBufferSize

获取SO_RCVBUF DatagramSocket选项的值,即平台为此输入 DatagramSocket使用的缓冲区大小。 - 或 - 将SO_RCVBUF选项设置为指定的值 DatagramSocket

(继承自 DatagramSocket)
RemoteSocketAddress

返回此套接字连接到的终结点的地址,或 null 未连接该终结点的地址。

(继承自 DatagramSocket)
ReuseAddress

测试是否启用了SO_REUSEADDR。 -或 - 启用/禁用SO_REUSEADDR套接字选项。

(继承自 DatagramSocket)
SendBufferSize

获取此 DatagramSocket选项的SO_SNDBUF选项的值,即平台为此输出 DatagramSocket使用的缓冲区大小。 - 或 - 将SO_SNDBUF选项设置为指定的值 DatagramSocket

(继承自 DatagramSocket)
SoTimeout

检索SO_TIMEOUT的设置。 - 或 - 启用/禁用具有指定超时(以毫秒为单位)的SO_TIMEOUT。

(继承自 DatagramSocket)
ThresholdClass

此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。

ThresholdType

此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。

TimeToLive

获取在套接字上发送的多播数据包的默认生存时间。 - 或 - 设置为此 MulticastSocket 发送的多播数据包的默认生存时间,以便控制多播的范围。

TrafficClass

获取从此 DatagramSocket 发送的数据包的 IP 数据报标头中的流量类或服务类型。 - 或 - 设置从此 DatagramSocket 发送的数据报的 IP 数据报标头中的流量类或服务八进制数类型。

(继承自 DatagramSocket)
TTL
已过时.

获取在套接字上发送的多播数据包的默认生存时间。 - 或 - 设置为此 MulticastSocket 发送的多播数据包的默认生存时间,以便控制多播的范围。

方法

名称 说明
Bind(SocketAddress)

将此 DatagramSocket 绑定到特定的地址和端口。

(继承自 DatagramSocket)
Clone()

创建并返回此对象的副本。

(继承自 Object)
Close()

关闭此数据报套接字。

(继承自 DatagramSocket)
Connect(InetAddress, Int32)

将套接字连接到此套接字的远程地址。

(继承自 DatagramSocket)
Connect(SocketAddress)

将此套接字连接到远程套接字地址(IP 地址 + 端口号)。

(继承自 DatagramSocket)
ConnectAsync(InetAddress, Int32)

多播数据报套接字类可用于发送和接收 IP 多播数据包。

(继承自 DatagramSocket)
ConnectAsync(SocketAddress)

多播数据报套接字类可用于发送和接收 IP 多播数据包。

(继承自 DatagramSocket)
Disconnect()

断开套接字的连接。

(继承自 DatagramSocket)
Dispose()

多播数据报套接字类可用于发送和接收 IP 多播数据包。

(继承自 Object)
Dispose(Boolean)

多播数据报套接字类可用于发送和接收 IP 多播数据包。

(继承自 Object)
Equals(Object)

指示其他对象是否“等于”此对象。

(继承自 Object)
GetHashCode()

返回对象的哈希代码值。

(继承自 Object)
GetOption(ISocketOption)

返回套接字选项的值。

(继承自 DatagramSocket)
JavaFinalize()

当垃圾回收确定不再引用该对象时,由对象上的垃圾回收器调用。

(继承自 Object)
JoinGroup(InetAddress)

加入多播组。

JoinGroup(SocketAddress, NetworkInterface)

在指定的接口上联接指定的多播组。

LeaveGroup(InetAddress)

保留多播组。

LeaveGroup(SocketAddress, NetworkInterface)

将多播组保留在指定的本地接口上。

Notify()

唤醒正在等待此对象的监视器的单个线程。

(继承自 Object)
NotifyAll()

唤醒正在等待此对象的监视器的所有线程。

(继承自 Object)
Receive(DatagramPacket)

从此套接字接收数据报数据包。

(继承自 DatagramSocket)
ReceiveAsync(DatagramPacket)

多播数据报套接字类可用于发送和接收 IP 多播数据包。

(继承自 DatagramSocket)
Send(DatagramPacket, SByte)
已过时.

使用 TTL(生存时间)将数据报数据包发送到目标,而不是套接字的默认值。

Send(DatagramPacket)

从此套接字发送数据报数据包。

(继承自 DatagramSocket)
SendAsync(DatagramPacket)

多播数据报套接字类可用于发送和接收 IP 多播数据包。

(继承自 DatagramSocket)
SetHandle(IntPtr, JniHandleOwnership)

设置 Handle 属性。

(继承自 Object)
SetOption(ISocketOption, Object)

设置套接字选项的值。

(继承自 DatagramSocket)
SupportedOptions()

返回此套接字支持的一组套接字选项。

(继承自 DatagramSocket)
ToArray<T>()

多播数据报套接字类可用于发送和接收 IP 多播数据包。

(继承自 Object)
ToString()

返回对象的字符串表示形式。

(继承自 Object)
UnregisterFromRuntime()

多播数据报套接字类可用于发送和接收 IP 多播数据包。

(继承自 Object)
Wait()

使当前线程等待,直到唤醒它,通常是通过 em 通知/em< 或 >em<interrupted>/em<。><>

(继承自 Object)
Wait(Int64, Int32)

使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。

(继承自 Object)
Wait(Int64)

使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。

(继承自 Object)

显式接口实现

名称 说明
IJavaPeerable.Disposed()

多播数据报套接字类可用于发送和接收 IP 多播数据包。

(继承自 Object)
IJavaPeerable.DisposeUnlessReferenced()

多播数据报套接字类可用于发送和接收 IP 多播数据包。

(继承自 Object)
IJavaPeerable.Finalized()

多播数据报套接字类可用于发送和接收 IP 多播数据包。

(继承自 Object)
IJavaPeerable.JniManagedPeerState

多播数据报套接字类可用于发送和接收 IP 多播数据包。

(继承自 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

多播数据报套接字类可用于发送和接收 IP 多播数据包。

(继承自 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

多播数据报套接字类可用于发送和接收 IP 多播数据包。

(继承自 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

多播数据报套接字类可用于发送和接收 IP 多播数据包。

(继承自 Object)

扩展方法

名称 说明
GetJniTypeName(IJavaPeerable)

获取实例 self类型的 JNI 名称。

JavaAs<TResult>(IJavaPeerable)

尝试强制self键入TResult,检查强制是否在Java端有效。

JavaCast<TResult>(IJavaObject)

执行 Android 运行时检查的类型转换。

JavaCast<TResult>(IJavaObject)

多播数据报套接字类可用于发送和接收 IP 多播数据包。

TryJavaCast<TResult>(IJavaPeerable, TResult)

尝试强制self键入TResult,检查强制是否在Java端有效。

适用于