日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OSMulticastSocket

MulticastSocket

創(chuàng)新互聯(lián)于2013年創(chuàng)立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站建設(shè)、網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元播州做網(wǎng)站,已為上家服務(wù),為播州各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792

java.lang.Object

|---java.net.DatagramSocket

|---|---java.net.MulticastSocket

public class MulticastSocket
extends DatagramSocket

多播數(shù)據(jù)報(bào)套接字類對(duì)于發(fā)送和接收 IP 多播數(shù)據(jù)包很有用。 MulticastSocket 是一個(gè) (UDP) DatagramSocket,具有加入 Internet 上其他多播主機(jī)“組”的附加功能。

多播組由 D 類 IP 地址和標(biāo)準(zhǔn) UDP 端口號(hào)指定。 D 類 IP 地址的范圍為 224.0.0.0 到 239.255.255.255(含)。 地址 224.0.0.0 已保留,不應(yīng)使用。

可以通過首先使用所需端口創(chuàng)建 MulticastSocket,然后調(diào)用 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);
 DatagramPacket hi = new DatagramPacket(msg.getBytes(), msg.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);

當(dāng)一個(gè)人向多播組發(fā)送消息時(shí),該主機(jī)和端口的所有訂閱接收者都會(huì)收到該消息(在數(shù)據(jù)包的生存時(shí)間范圍內(nèi),見下文)。 套接字不必是多播組的成員即可向其發(fā)送消息。

當(dāng)套接字訂閱多播組/端口時(shí),它會(huì)接收其他主機(jī)發(fā)送到該組/端口的數(shù)據(jù)報(bào),該組和端口的所有其他成員也是如此。 套接字通過 leaveGroup(InetAddress addr) 方法放棄組中的成員資格。 多個(gè)MulticastSocket 可以同時(shí)訂閱一個(gè)組播組和端口,它們都將接收組數(shù)據(jù)報(bào)。

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

構(gòu)造函數(shù)摘要

構(gòu)造函數(shù) 描述
MulticastSocket() 創(chuàng)建一個(gè)多播套接字。
MulticastSocket(int port) 創(chuàng)建一個(gè)多播套接字并將其綁定到特定端口。
MulticastSocket(SocketAddress bindaddr) 創(chuàng)建一個(gè)綁定到指定套接字地址的 MulticastSocket。

方法總結(jié)

修飾符和類型 方法 描述
InetAddress getInterface() 檢索用于多播數(shù)據(jù)包的網(wǎng)絡(luò)接口的地址。
boolean getLoopbackMode() 獲取組播數(shù)據(jù)報(bào)本地環(huán)回的設(shè)置。
NetworkInterface getNetworkInterface() 獲取組播網(wǎng)絡(luò)接口集。
int getTimeToLive() 獲取在套接字上發(fā)送的多播數(shù)據(jù)包的默認(rèn)生存時(shí)間。
byte getTTL() 已棄用。 改用 getTimeToLive 方法,它返回一個(gè) int 而不是一個(gè)字節(jié)。
void joinGroup(InetAddress mcastaddr) 加入多播組。
void joinGroup(SocketAddress mcastaddr, NetworkInterface netIf) 在指定接口加入指定的組播組。
void leaveGroup(InetAddress mcastaddr) 離開一個(gè)多播組。
void leaveGroup(SocketAddress mcastaddr, NetworkInterface netIf) 將組播組留在指定的本地接口上。
void send(DatagramPacket p, byte ttl) 已棄用。 請(qǐng)改用以下代碼或其等效代碼:...... int ttl = mcastSocket.getTimeToLive(); mcastSocket.setTimeToLive(newttl); mcastSocket.send(p); mcastSocket.setTimeToLive(ttl); ……
void setInterface(InetAddress inf) 設(shè)置行為將受網(wǎng)絡(luò)接口值影響的方法使用的多播網(wǎng)絡(luò)接口。
void setLoopbackMode(boolean disable) 禁用/啟用多播數(shù)據(jù)報(bào)的本地環(huán)回 該選項(xiàng)被平臺(tái)的網(wǎng)絡(luò)代碼用作設(shè)置多播數(shù)據(jù)是否將環(huán)回本地套接字的提示。
void setNetworkInterface(NetworkInterface netIf) 指定在此套接字上發(fā)送的傳出多播數(shù)據(jù)報(bào)的網(wǎng)絡(luò)接口。
void setTimeToLive(int ttl) 設(shè)置在此 MulticastSocket 上發(fā)送的多播數(shù)據(jù)包的默認(rèn)生存時(shí)間,以控制多播的范圍。
void setTTL(byte ttl) 已棄用。 改用 setTimeToLive 方法,該方法使用 int 而不是 byte 作為 ttl 的類型。
從類 java.net.DatagramSocket 繼承的方法
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
從類 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

構(gòu)造函數(shù)詳細(xì)信息

MulticastSocket

public MulticastSocket() throws IOException

創(chuàng)建一個(gè)多播套接字。

如果存在安全管理器,則首先調(diào)用其 checkListen 方法,并以 0 作為其參數(shù),以確保允許該操作。 這可能會(huì)導(dǎo)致 SecurityException。

創(chuàng)建套接字時(shí),調(diào)用 DatagramSocket#setReuseAddress(boolean) 方法以啟用 SO_REUSEADDR 套接字選項(xiàng)。

Throws:

Throw名稱 Throw描述
IOException 如果在創(chuàng)建 MulticastSocket 時(shí)發(fā)生 I/O 異常
SecurityException 如果安全管理器存在并且其 checkListen 方法不允許該操作。

MulticastSocket

public MulticastSocket(int port) throws IOException

創(chuàng)建一個(gè)多播套接字并將其綁定到特定端口。

如果有安全管理器,首先調(diào)用它的 checkListen 方法,并將端口參數(shù)作為其參數(shù),以確保允許該操作。 這可能會(huì)導(dǎo)致 SecurityException。

創(chuàng)建套接字時(shí),調(diào)用 DatagramSocket#setReuseAddress(boolean) 方法以啟用 SO_REUSEADDR 套接字選項(xiàng)。

參數(shù):

參數(shù)名稱 參數(shù)描述
port 使用的端口

Throws:

Throw名稱 Throw描述
IOException 如果在創(chuàng)建 MulticastSocket 時(shí)發(fā)生 I/O 異常
SecurityException 如果安全管理器存在并且其 checkListen 方法不允許該操作。

MulticastSocket

public MulticastSocket(SocketAddress bindaddr) throws IOException

創(chuàng)建一個(gè)綁定到指定套接字地址的 MulticastSocket。

或者,如果地址為空,則創(chuàng)建一個(gè)未綁定的套接字。

如果有安全管理器,首先調(diào)用它的 checkListen 方法,并以 SocketAddress 端口作為其參數(shù),以確保允許該操作。 這可能會(huì)導(dǎo)致 SecurityException。

創(chuàng)建套接字時(shí),調(diào)用 DatagramSocket#setReuseAddress(boolean) 方法以啟用 SO_REUSEADDR 套接字選項(xiàng)。

參數(shù):

參數(shù)名稱 參數(shù)描述
bindaddr 要綁定到的套接字地址,或者對(duì)于未綁定的套接字為 null。

Throws:

Throw名稱 Throw描述
IOException 如果在創(chuàng)建 MulticastSocket 時(shí)發(fā)生 I/O 異常
SecurityException 如果安全管理器存在并且其 checkListen 方法不允許該操作。

方法詳情

setTTL

@Deprecated public void setTTL(byte ttl) throws IOException

已棄用。 改用 setTimeToLive 方法,該方法使用 int 而不是 byte 作為 ttl 的類型。

設(shè)置在此 MulticastSocket 上發(fā)送的多播數(shù)據(jù)包的默認(rèn)生存時(shí)間,以控制多播的范圍。

ttl 是一個(gè)無符號(hào)的 8 位量,因此必須在 0 <= ttl <= 0xFF 范圍內(nèi)。

參數(shù):

參數(shù)名稱 參數(shù)描述
ttl time-to-live

Throws:

Throw名稱 Throw描述
IOException 如果在設(shè)置默認(rèn)生存時(shí)間值時(shí)發(fā)生 I/O 異常

setTimeToLive

public void setTimeToLive(int ttl) throws IOException

設(shè)置在此 MulticastSocket 上發(fā)送的多播數(shù)據(jù)包的默認(rèn)生存時(shí)間,以控制多播的范圍。

ttl 必須在 0 <= ttl <= 255 范圍內(nèi),否則將引發(fā) IllegalArgumentException。 以 0 的 TTL 發(fā)送的組播數(shù)據(jù)包不會(huì)在網(wǎng)絡(luò)上傳輸,但可以在本地傳送。

參數(shù):

參數(shù)名稱 參數(shù)描述
ttl time-to-live

Throws:

Throw名稱 Throw描述
IOException 如果在設(shè)置默認(rèn)生存時(shí)間值時(shí)發(fā)生 I/O 異常

getTTL

@Deprecated public byte getTTL() throws IOException

已棄用。 改用 getTimeToLive 方法,它返回一個(gè) int 而不是一個(gè)字節(jié)。

獲取在套接字上發(fā)送的多播數(shù)據(jù)包的默認(rèn)生存時(shí)間。

返回:

默認(rèn)生存時(shí)間值

Throws:

Throw名稱 Throw描述
IOException 如果在獲取默認(rèn)time-to-live值時(shí)發(fā)生 I/O 異常

getTimeToLive

public int getTimeToLive() throws IOException

獲取在套接字上發(fā)送的多播數(shù)據(jù)包的默認(rèn)time-to-live。

返回:

默認(rèn)time-to-live值

Throws:

Throw名稱 Throw描述
IOException 如果在獲取默認(rèn)生存時(shí)間值時(shí)發(fā)生 I/O 異常

joinGroup

public void joinGroup(InetAddress mcastaddr) throws IOException

加入多播組。 它的行為可能會(huì)受到 setInterface 或 setNetworkInterface 的影響。

如果有安全管理器,則此方法首先調(diào)用其 checkMulticast 方法,并將 mcastaddr 參數(shù)作為其參數(shù)。

參數(shù):

參數(shù)名稱 參數(shù)描述
mcastaddr 是要加入的多播地址

Throws:

Throw名稱 Throw描述
IOException 如果加入錯(cuò)誤或地址不是多播地址。
SecurityException 如果存在安全管理器并且其 checkMulticast 方法不允許加入。

leaveGroup

public void leaveGroup(InetAddress mcastaddr) throws IOException

離開一個(gè)多播組。 它的行為可能會(huì)受到 setInterface 或 setNetworkInterface 的影響。

如果有安全管理器,則此方法首先調(diào)用其 checkMulticast 方法,并將 mcastaddr 參數(shù)作為其參數(shù)。

參數(shù):

參數(shù)名稱 參數(shù)描述
mcastaddr 是離開的組播地址

Throws:

Throw名稱 Throw描述
IOException 如果離開時(shí)出錯(cuò)或地址不是多播地址。
SecurityException 如果存在安全管理器并且其 checkMulticast 方法不允許該操作。

joinGroup

public void joinGroup(SocketAddress mcastaddr, NetworkInterface netIf) throws IOException

在指定接口加入指定的組播組。

如果有安全管理器,則此方法首先調(diào)用其 checkMulticast 方法,并將 mcastaddr 參數(shù)作為其參數(shù)。

參數(shù):

參數(shù)名稱 參數(shù)描述
mcastaddr 是要加入的多播地址
netIf 指定接收多播數(shù)據(jù)報(bào)包的本地接口,或 null 以遵循 MulticastSocket#setInterface(InetAddress) 或 MulticastSocket#setNetworkInterface(NetworkInterface) 設(shè)置的接口

Throws:

Throw名稱 Throw描述
IOException 如果加入錯(cuò)誤或地址不是多播地址。
SecurityException 如果存在安全管理器并且其 checkMulticast 方法不允許加入。
IllegalArgumentException 如果 mcastaddr 為 null 或者是此套接字不支持的 SocketAddress 子類

leaveGroup

public void leaveGroup(SocketAddress mcastaddr, NetworkInterface netIf) throws IOException

將組播組留在指定的本地接口上。

如果有安全管理器,則此方法首先調(diào)用其 checkMulticast 方法,并將 mcastaddr 參數(shù)作為其參數(shù)。

參數(shù):

參數(shù)名稱 參數(shù)描述
mcastaddr 是要離開的多播地址
netIf 指定本地接口或 null 以遵循 MulticastSocket#setInterface(InetAddress) 或 MulticastSocket#setNetworkInterface(NetworkInterface) 設(shè)置的接口

Throws:

Throw名稱 Throw描述
IOException 如果離開時(shí)出錯(cuò)或地址不是多播地址。
SecurityException 如果存在安全管理器并且其 checkMulticast 方法不允許該操作。
IllegalArgumentException 如果 mcastaddr 為 null 或者是此套接字不支持的 SocketAddress 子類

setInterface

public void setInterface(InetAddress inf) throws SocketException

設(shè)置行為將受網(wǎng)絡(luò)接口值影響的方法使用的多播網(wǎng)絡(luò)接口。 對(duì)于多宿主主機(jī)很有用。

參數(shù):

參數(shù)名稱 參數(shù)描述
inf 網(wǎng)絡(luò)地址

Throws:

Throw名稱 Throw描述
SocketException 如果底層協(xié)議有錯(cuò)誤,例如 TCP 錯(cuò)誤。

getInterface

public InetAddress getInterface() throws SocketException

檢索用于多播數(shù)據(jù)包的網(wǎng)絡(luò)接口的地址。

返回:

InetAddress 表示用于多播數(shù)據(jù)包的網(wǎng)絡(luò)接口的地址。

Throws:

Throw名稱 Throw描述
SocketException 如果底層協(xié)議有錯(cuò)誤,例如 TCP 錯(cuò)誤。

setNetworkInterface

public void setNetworkInterface(NetworkInterface netIf) throws SocketException

指定在此套接字上發(fā)送的傳出多播數(shù)據(jù)報(bào)的網(wǎng)絡(luò)接口。

參數(shù):

參數(shù)名稱 參數(shù)描述
netIf 該接口

Throws:

Throw名稱 Throw描述
SocketException 如果底層協(xié)議有錯(cuò)誤,例如 TCP 錯(cuò)誤。

getNetworkInterface

public NetworkInterface getNetworkInterface() throws SocketException

獲取組播網(wǎng)絡(luò)接口集。

返回:

當(dāng)前設(shè)置的多播網(wǎng)絡(luò)接口

Throws:

Throw名稱 Throw描述
SocketException 如果底層協(xié)議有錯(cuò)誤,例如 TCP 錯(cuò)誤。

setLoopbackMode

public void setLoopbackMode(boolean disable) throws SocketException

禁用/啟用多播數(shù)據(jù)報(bào)的本地環(huán)回 該選項(xiàng)被平臺(tái)的網(wǎng)絡(luò)代碼用作設(shè)置多播數(shù)據(jù)是否將環(huán)回本地套接字的提示。

因?yàn)檫@個(gè)選項(xiàng)是一個(gè)提示,所以想要驗(yàn)證設(shè)置的環(huán)回模式的應(yīng)用程序應(yīng)該調(diào)用 getLoopbackMode()

參數(shù):

參數(shù)名稱 參數(shù)描述
disable true 禁用 LoopbackMode

Throws:

Throw名稱 Throw描述
SocketException 如果在設(shè)置值時(shí)發(fā)生錯(cuò)誤

getLoopbackMode

public boolean getLoopbackMode() throws SocketException

獲取組播數(shù)據(jù)報(bào)本地環(huán)回的設(shè)置。

返回:

如果 LoopbackMode 已被禁用,則為 true

Throws:

Throw名稱 Throw描述
SocketException 如果獲取值時(shí)發(fā)生錯(cuò)誤

send

@Deprecated public void send(DatagramPacket p, byte ttl) throws IOException

已棄用。請(qǐng)改用以下代碼或其等效代碼:...... int ttl = mcastSocket.getTimeToLive(); mcastSocket.setTimeToLive(newttl); mcastSocket.send(p); mcastSocket.setTimeToLive(ttl); ……

將數(shù)據(jù)報(bào)包發(fā)送到目的地,其 TTL(生存時(shí)間)不是套接字的默認(rèn)值。這種方法只需要在需要特定 TTL 的情況下使用;否則最好在套接字上設(shè)置一次 TTL,并為所有數(shù)據(jù)包使用該默認(rèn) TTL。此方法不會(huì)更改套接字的默認(rèn) TTL。它的行為可能會(huì)受到 setInterface 的影響。

如果有安全管理器,此方法首先執(zhí)行一些安全檢查。首先,如果 p.getAddress().isMulticastAddress() 為真,則此方法以 p.getAddress() 和 ttl 作為其參數(shù)調(diào)用安全管理器的 checkMulticast 方法。如果該表達(dá)式的評(píng)估結(jié)果為假,則此方法將使用參數(shù) p.getAddress().getHostAddress() 和 p.getPort() 調(diào)用安全管理器的 checkConnect 方法。如果不允許該操作,則對(duì)安全管理器方法的每次調(diào)用都可能導(dǎo)致 SecurityException。

參數(shù):

參數(shù)名稱 參數(shù)描述
p 是要發(fā)送的數(shù)據(jù)包。 數(shù)據(jù)包應(yīng)包含目標(biāo)多播 IP 地址和要發(fā)送的數(shù)據(jù)。 無需成為組的成員即可將數(shù)據(jù)包發(fā)送到目標(biāo)多播地址。
ttl 多播數(shù)據(jù)包的可選生存時(shí)間。 默認(rèn) ttl 為 1。

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生錯(cuò)誤,即設(shè)置 ttl 時(shí)出錯(cuò),則引發(fā)。
SecurityException 如果存在安全管理器并且其 checkMulticast 或 checkConnect 方法不允許發(fā)送。

分享文章:創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OSMulticastSocket
瀏覽地址:http://www.dlmjj.cn/article/cdggisc.html