public class MulticastSocket extends DatagramSocket
一个多播组的D类IP地址和一个标准的UDP端口号指定。D类IP地址的范围是224.0.0.0
到239.255.255.255
,包容。地址224.0.0.0保留,不应使用。
人会首先创建一个具有所需的端口来加入一个组播组,然后调用joinGroup(InetAddress groupAddr)
方法:
/ /加入一个组播组发送组致敬…字符串味精=“你好”;InetAddress组它。通过getByName(“228.5.6.7”);多播套接字=新来的(6789);s.joingroup(集团);数据报HI =新的数据报(味精。getbytes() length(),味精,组,6789);派遣(HI);得到他们的回应!字节[] BUF字节=新[ 1000 ];数据报接收=新的数据报(缓冲区,缓冲区的长度);接受(接收);…/好的,我做了说话-离开小组…s.leavegroup(集团);时发送一个消息到一个多播组, 全部的预定该主机和端口的接收者接收信息(时间内的数据包,生活范围见下)。该套接字不需要是多播组的成员来发送消息。
当一个套接字预订一个多播组/端口,它接收到其它主机发送到组/端口的数据报,这样的组和端口的所有其他成员。插座离组中的成员资格的leavegroup(InetAddress addr)方法。多个多播套接字可以订阅一个组播组和港口的同时,他们都可以接收数据报。
目前程序不允许使用多播套接字。
Constructor and Description |
---|
MulticastSocket()
创建一个多播套接字。
|
MulticastSocket(int port)
创建一个多播套接字并将其绑定到一个特定的端口。
|
MulticastSocket(SocketAddress bindaddr)
创建一个多播套接字绑定到指定的套接字地址。
|
Modifier and Type | Method and Description |
---|---|
InetAddress |
getInterface()
检索用于多播包的网络接口的地址。
|
boolean |
getLoopbackMode()
获得多播数据报的本地回环设置。
|
NetworkInterface |
getNetworkInterface()
获取组播网络接口集。
|
int |
getTimeToLive()
获取在套接字上发送的多播包的默认时间。
|
byte |
getTTL()
过时的。
使用gettimetolive方法相反,它返回一个int代替一个字节。
|
void |
joinGroup(InetAddress mcastaddr)
加入一个多播组。
|
void |
joinGroup(SocketAddress mcastaddr, NetworkInterface netIf)
在指定的接口中加入指定的多播组。
|
void |
leaveGroup(InetAddress mcastaddr)
留下一个多播组。
|
void |
leaveGroup(SocketAddress mcastaddr, NetworkInterface netIf)
在指定的本地接口上留下多播组。
|
void |
send(DatagramPacket p, byte ttl)
过时的。
使用下面的代码或其等效的:int TTL = mcastsocket。gettimetolive();mcastsocket。settimetolive(newttl);mcastsocket。发送(P);mcastsocket。settimetolive(TTL);......
|
void |
setInterface(InetAddress inf)
设置使用网络接口的值影响其行为的方法所使用的多播网络接口。
|
void |
setLoopbackMode(boolean disable)
禁用/启用多播数据报的本地回环的选项是使用平台的网络代码作为是否设置将多播数据回送到本地套接字的暗示。
|
void |
setNetworkInterface(NetworkInterface netIf)
指定发送多播数据报套接字的网络接口上发送。
|
void |
setTimeToLive(int ttl)
设置默认时间为组播包住发出这
MulticastSocket 为了控制多播的范围。
|
void |
setTTL(byte ttl)
过时的。
使用settimetolive方法相反,它使用int代替字节为TTL型。
|
bind, close, connect, connect, disconnect, getBroadcast, getChannel, getInetAddress, getLocalAddress, getLocalPort, getLocalSocketAddress, getPort, getReceiveBufferSize, getRemoteSocketAddress, getReuseAddress, getSendBufferSize, getSoTimeout, getTrafficClass, isBound, isClosed, isConnected, receive, send, setBroadcast, setDatagramSocketImplFactory, setReceiveBufferSize, setReuseAddress, setSendBufferSize, setSoTimeout, setTrafficClass
public MulticastSocket() throws IOException
如果存在安全管理器,它的checkListen
方法是先叫0来保证操作的参数是允许的。这可能导致SecurityException。
当套接字创建DatagramSocket.setReuseAddress(boolean)
方法以使so_reuseaddr套接字选项。
IOException
如果发生I/O异常而创建的多播套接字
SecurityException
-如果存在一个安全管理及其
checkListen
方法不允许操作。
SecurityManager.checkListen(int)
,
DatagramSocket.setReuseAddress(boolean)
public MulticastSocket(int port) throws IOException
如果存在安全管理器,它的checkListen
方法与port
参数以保证运行参数可以先叫。这可能导致SecurityException。
当套接字创建DatagramSocket.setReuseAddress(boolean)
方法以使so_reuseaddr套接字选项。
port
端口使用
IOException
如果发生I/O异常而创建的多播套接字
SecurityException
-如果存在一个安全管理及其
checkListen
方法不允许操作。
SecurityManager.checkListen(int)
,
DatagramSocket.setReuseAddress(boolean)
public MulticastSocket(SocketAddress bindaddr) throws IOException
或者,如果地址是null
,创建一个未绑定套接字。
如果存在安全管理器,它的checkListen
方法与SocketAddress端口以确保操作的参数是允许先叫。这可能导致SecurityException。
当套接字创建DatagramSocket.setReuseAddress(boolean)
方法以使so_reuseaddr套接字选项。
bindaddr
套接字地址绑定,或
null
为未绑定套接字。
IOException
如果发生I/O异常而创建的多播套接字
SecurityException
-如果存在一个安全管理及其
checkListen
方法不允许操作。
SecurityManager.checkListen(int)
,
DatagramSocket.setReuseAddress(boolean)
@Deprecated public void setTTL(byte ttl) throws IOException
MulticastSocket
为了控制多播的范围。
TTL是一个无符号 8位的数量,所以必须范围是0 <= ttl <= 0xFF
。
ttl
-生存时间
IOException
如果发生I/O异常而设置的生活价值的默认时间
getTTL()
public void setTimeToLive(int ttl) throws IOException
MulticastSocket
为了控制多播的范围。
TTL 必须范围是0 <= ttl <= 255
或IllegalArgumentException
将抛出。多播数据包的TTL以0
派不上网络传输可提供本地。
ttl
-生存时间
IOException
如果发生I/O异常而设置的生活价值的默认时间
getTimeToLive()
@Deprecated public byte getTTL() throws IOException
IOException
如果发生I/O异常而获得生活价值的默认时间
setTTL(byte)
public int getTimeToLive() throws IOException
IOException
如果发生I/O异常而获得生活价值的默认时间
setTimeToLive(int)
public void joinGroup(InetAddress mcastaddr) throws IOException
setInterface
setNetworkInterface
如果存在安全管理器,该方法首先调用它的checkMulticast
法作为其参数的mcastaddr
论点。
mcastaddr
-加入组播地址
IOException
-如果有一个错误连接或当地址不是一个多播地址。
SecurityException
-如果存在一个安全管理及其
checkMulticast
方法不允许加入。
SecurityManager.checkMulticast(InetAddress)
public void leaveGroup(InetAddress mcastaddr) throws IOException
setInterface
或
setNetworkInterface
。
如果存在安全管理器,该方法首先调用与mcastaddr
参数作为其参数的checkMulticast
方法。
mcastaddr
-离开组播地址
IOException
-如果有错误或离开时的地址不是一个多播地址。
SecurityException
-如果存在一个安全管理及其
checkMulticast
方法不允许操作。
SecurityManager.checkMulticast(InetAddress)
public void joinGroup(SocketAddress mcastaddr, NetworkInterface netIf) throws IOException
如果存在安全管理器,该方法首先调用作为参数的mcastaddr
论证其checkMulticast
方法。
mcastaddr
-加入组播地址
netIf
-指定本地接口接收组播数据包,或推迟到
setInterface(InetAddress)
或
setNetworkInterface(NetworkInterface)
接口
IOException
-如果有一个错误连接或当地址不是一个多播地址。
SecurityException
-如果存在一个安全管理及其
checkMulticast
方法不允许加入。
IllegalArgumentException
-如果mcastaddr是空的或是通过这个插座不支持SocketAddress类
SecurityManager.checkMulticast(InetAddress)
public void leaveGroup(SocketAddress mcastaddr, NetworkInterface netIf) throws IOException
如果存在安全管理器,该方法首先调用与mcastaddr
参数作为其参数的checkMulticast
方法。
mcastaddr
-离开组播地址
netIf
-指定本地接口或推迟到
setInterface(InetAddress)
或
setNetworkInterface(NetworkInterface)
接口
IOException
-如果有错误或离开时的地址不是一个多播地址。
SecurityException
-如果存在一个安全管理及其
checkMulticast
方法不允许操作。
IllegalArgumentException
-如果mcastaddr是空的或是通过这个插座不支持SocketAddress类
SecurityManager.checkMulticast(InetAddress)
public void setInterface(InetAddress inf) throws SocketException
inf
-但是它
SocketException
-如果在底层协议有错误,例如TCP错误。
getInterface()
public InetAddress getInterface() throws SocketException
InetAddress
。
SocketException
-如果在底层协议有错误,例如TCP错误。
setInterface(java.net.InetAddress)
public void setNetworkInterface(NetworkInterface netIf) throws SocketException
netIf
-界面
SocketException
-如果在底层协议有错误,例如TCP错误。
getNetworkInterface()
public NetworkInterface getNetworkInterface() throws SocketException
NetworkInterface
SocketException
-如果在底层协议有错误,例如TCP错误。
setNetworkInterface(NetworkInterface)
public void setLoopbackMode(boolean disable) throws SocketException
因为这个选项是一个提示,应用程序要验证什么环回模式设置为应该叫getLoopbackMode()
disable
-
true
禁用loopbackmode
SocketException
如果同时设置的值时发生错误
getLoopbackMode()
public boolean getLoopbackMode() throws SocketException
SocketException
-如果发生错误而获得的价值
setLoopbackMode(boolean)
@Deprecated public void send(DatagramPacket p, byte ttl) throws IOException
setInterface
。
如果有一个安全管理器,该方法首先执行一些安全检查。首先,如果z- bbbbb 7e0-60a0-4cf9-b072-cd9e4ee58168是真的,这个方法调用作为参数p.getAddress()
和ttl
安全经理的checkMulticast
方法。如果这个表达是错误的评价,这种方法而不是调用参数p.getAddress().getHostAddress()
和p.getPort()
安全经理的checkConnect
方法。每次调用一个安全管理方法如果操作不允许导致SecurityException。
p
-发送数据包。该数据包应该包含目的地组播IP地址和发送的数据。一个不需要是组的成员发送数据包到一个目的地多播地址。
ttl
可选时间为多播包住。默认的TTL是1。
IOException
-如果出现错误,即错误而设置的TTL提出。
SecurityException
-如果存在一个安全管理及其
checkMulticast
或
checkConnect
方法不允许发送。
DatagramSocket.send(java.net.DatagramPacket)
,
DatagramSocket.receive(java.net.DatagramPacket)
,
SecurityManager.checkMulticast(java.net.InetAddress, byte)
,
SecurityManager.checkConnect(java.lang.String, int)
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.