public class MulticastSocket extends DatagramSocket
ãã«ããã£ã¹ãã»ã°ã«ãŒãã¯ãã¯ã©ã¹D IPã¢ãã¬ã¹ãšæšæºã®UDPããŒãçªå·ã«ãã£ãŠæå®ãããŸãã ã¯ã©ã¹D IPã¢ãã¬ã¹ã®ç¯å²ã¯ã224.0.0.0ãã239.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);
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);
ãã«ããã£ã¹ãã»ã°ã«ãŒãã«ã¡ãã»ãŒãžãéä¿¡ãããšããã®ãã¹ããšããŒãã®ãã¹ãŠã®åå è
ãã¡ãã»ãŒãžãåãåããŸã(ãã ããã±ããã®æå¹æéå
ã«éãããã詳现ã¯åŸè¿°)ã ãã«ããã£ã¹ãã»ã°ã«ãŒãã«ã¡ãã»ãŒãžãéä¿¡ããããã«ã¯ããœã±ããããã®ãã«ããã£ã¹ãã»ã°ã«ãŒãã®ã¡ã³ããŒã§ããå¿
èŠã¯ãããŸããã
ãœã±ããããã«ããã£ã¹ãã»ã°ã«ãŒããŸãã¯ããŒãã«åå ãããšãã»ãã®ãã¹ããããã®ã°ã«ãŒããŸãã¯ããŒãã«éä¿¡ãããããŒã¿ã°ã©ã ãåä¿¡ããããšãã§ããŸãããã®ã°ã«ãŒããšããŒãã®ä»ã®ã¡ã³ããŒããã¹ãŠåãããŒã¿ã°ã©ã ãåä¿¡ããŸãã ãœã±ãããã°ã«ãŒãããå€ãã«ã¯ãleaveGroup(InetAddress addr)ã¡ãœããã䜿çšããŸãã è€æ°ã®MulticastSocketã䞊è¡ããŠãã«ããã£ã¹ãã»ã°ã«ãŒããšããŒãã«åå ããããšãã§ãããããã®MulticastSocketã¯ãã¹ãŠã°ã«ãŒãã»ããŒã¿ã°ã©ã ãåä¿¡ããŸãã
çŸåšã®ãšãããã¢ãã¬ããã§ã¯ãã«ããã£ã¹ãã»ãœã±ããã䜿çšããããšã¯ã§ããŸããã
| ã³ã³ã¹ãã©ã¯ã¿ | 説æ |
|---|---|
MulticastSocket() |
ãã«ããã£ã¹ãã»ãœã±ãããäœæããŸãã
|
MulticastSocket(int port) |
ç¹å®ã®ããŒãã«ãã€ã³ãããããã«ããã£ã¹ãã»ãœã±ãããäœæããŸãã
|
MulticastSocket(SocketAddress bindaddr) |
æå®ããããœã±ããã»ã¢ãã¬ã¹ã«ãã€ã³ããããMulticastSocketãäœæããŸãã
|
| 修食åãšå | ã¡ãœãã | 説æ |
|---|---|---|
InetAddress |
getInterface() |
ãã«ããã£ã¹ãã»ãã±ããã«äœ¿çšãããããã¯ãŒã¯ã»ã€ã³ã¿ãã§ãŒã¹ã®ã¢ãã¬ã¹ãååŸããŸãã
|
boolean |
getLoopbackMode() |
ãã«ããã£ã¹ãã»ããŒã¿ã°ã©ã ã®ããŒã«ã«ã»ã«ãŒãããã¯ã®èšå®å€ãååŸããŸãã
|
NetworkInterface |
getNetworkInterface() |
ãã«ããã£ã¹ãã»ãããã¯ãŒã¯ã»ã€ã³ã¿ãã§ãŒã¹ã»ã»ãããååŸããŸãã
|
int |
getTimeToLive() |
ãã®ãœã±ããããéä¿¡ããããã«ããã£ã¹ãã»ãã±ããã®ããã©ã«ãã®æå¹æéãååŸããŸãã
|
byte |
getTTL() |
éæšå¥šã
代ããã«getTimeToLiveã¡ãœããã䜿çšããŠãã ããããã®ã¡ãœããã¯ãbyteã§ã¯ãªã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.send(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ã¡ãœããã䜿çšããŠãã ããããã®ã¡ãœããã¯ttlã®åãšããŠãbyteã§ã¯ãªãintã䜿çšããŸãã
|
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, setTrafficClasspublic MulticastSocket()
throws IOException
ã»ãã¥ãªãã£ã»ãããŒãžã£ãååšããå Žåããã®æäœãèš±å¯ãããããã«ãæåã«ãã®checkListenã¡ãœããã0ãåŒæ°ã«æå®ããŠåŒã³åºãããŸãã ãã®çµæãSecurityExceptionãã¹ããŒãããããšããããŸãã
ãœã±ãããäœæããããšãSO_REUSEADDRãœã±ããã»ãªãã·ã§ã³ãæå¹ã«ããããã«ãDatagramSocket.setReuseAddress(boolean)ã¡ãœãããåŒã³åºãããŸãã
IOException - MulticastSocketã®äœæäžã«å
¥åºåäŸå€ãçºçããå ŽåSecurityException - ã»ãã¥ãªãã£ã»ãããŒãžã£ãååšãããã®checkListenã¡ãœããã§ãã®æäœãèš±å¯ãããŠããªãå ŽåãSecurityManager.checkListen(int), DatagramSocket.setReuseAddress(boolean)public MulticastSocket(int port)
throws IOException
ã»ãã¥ãªãã£ã»ãããŒãžã£ãååšããå Žåããã®æäœãèš±å¯ãããããã«ãæåã«ãã®checkListenã¡ãœãããportåŒæ°ããã®åŒæ°ãšããŠæå®ããŠåŒã³åºãããŸãã ãã®çµæãSecurityExceptionãã¹ããŒãããããšããããŸãã
ãœã±ãããäœæããããšãSO_REUSEADDRãœã±ããã»ãªãã·ã§ã³ãæå¹ã«ããããã«ãDatagramSocket.setReuseAddress(boolean)ã¡ãœãããåŒã³åºãããŸãã
port - 䜿çšããããŒãIOException - MulticastSocketã®äœæäžã«å
¥åºåäŸå€ãçºçããå ŽåSecurityException - ã»ãã¥ãªãã£ã»ãããŒãžã£ãååšãããã®checkListenã¡ãœããã§ãã®æäœãèš±å¯ãããŠããªãå ŽåãSecurityManager.checkListen(int), DatagramSocket.setReuseAddress(boolean)public MulticastSocket(SocketAddress bindaddr) throws IOException
ãããã¯ãã¢ãã¬ã¹ãnullã®å Žåã¯ãã¢ã³ããŠã³ãã®ãœã±ãããäœæããŸãã
ã»ãã¥ãªãã£ã»ãããŒãžã£ãååšããå Žåãæåã«ãã®checkListenã¡ãœãããSocketAddressããŒããåŒæ°ã«æå®ããŠåŒã³åºããããã®æäœãèš±å¯ããããã©ããã確èªãããŸãã ãã®çµæãSecurityExceptionãã¹ããŒãããããšããããŸãã
ãœã±ãããäœæããããšãSO_REUSEADDRãœã±ããã»ãªãã·ã§ã³ãæå¹ã«ããããã«ãDatagramSocket.setReuseAddress(boolean)ã¡ãœãããåŒã³åºãããŸãã
bindaddrâãã€ã³ããããœã±ããã»ã¢ãã¬ã¹ãã¢ã³ããŠã³ãã®ãœã±ããã®å Žåã¯nullãIOException - MulticastSocketã®äœæäžã«å
¥åºåäŸå€ãçºçããå ŽåSecurityException - ã»ãã¥ãªãã£ã»ãããŒãžã£ãååšãããã®checkListenã¡ãœããã§ãã®æäœãèš±å¯ãããŠããªãå ŽåãSecurityManager.checkListen(int), DatagramSocket.setReuseAddress(boolean)@Deprecated public void setTTL(byte ttl) throws IOException
MulticastSocketããéä¿¡ããããã«ããã£ã¹ãã»ãã±ããã®ããã©ã«ãã®æå¹æéãèšå®ããŸãã
ttlã¯ç¬Šå·ãªã8ãããã»ããŒã¿ãªã®ã§ã0 <= ttl <= 0xFFã®ç¯å²ã§ãªããã°ãããŸããã
ttl - æå¹æéIOException - ããã©ã«ãã®æå¹æéå€ã®èšå®äžã«å
¥åºåäŸå€ãçºçããå ŽågetTTL()public void setTimeToLive(int ttl)
throws IOException
MulticastSocketããéä¿¡ããããã«ããã£ã¹ãã»ãã±ããã®ããã©ã«ãã®æå¹æéãèšå®ããŸãã
ttlã®ç¯å²ã¯0 <= ttl <= 255ã§ãªããã°ãããŸãããããã§ãªãå Žåã¯ãIllegalArgumentExceptionãã¹ããŒãããŸãã TTLã0ã§éä¿¡ããããã«ããã£ã¹ãã»ãã±ããã¯ããããã¯ãŒã¯ã§ã¯è»¢éãããŸããããããŒã«ã«ã§è»¢éãããããšããããŸãã
ttl - æå¹æéIOException - ããã©ã«ãã®æå¹æéå€ã®èšå®äžã«å
¥åºåäŸå€ãçºçããå ŽågetTimeToLive()@Deprecated public byte getTTL() throws IOException
IOException - ããã©ã«ãã®æå¹æéå€ã®ååŸäžã«å
¥åºåäŸå€ãçºçããå ŽåsetTTL(byte)public int getTimeToLive()
throws IOException
IOException - ããã©ã«ãã®æå¹æéå€ã®ååŸäžã«å
¥åºåäŸå€ãçºçããå ŽåsetTimeToLive(int)public void joinGroup(InetAddress mcastaddr) throws IOException
setInterfaceãŸãã¯setNetworkInterfaceã®åœ±é¿ãåããå¯èœæ§ããããŸãã
ã»ãã¥ãªãã£ã»ãããŒãžã£ãååšããå Žåããã®ã¡ãœããã¯æåã«ãmcastaddrãåŒæ°ã«æå®ããŠcheckMulticastã¡ãœãããåŒã³åºããŸãã
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 - ãã«ããã£ã¹ãã»ããŒã¿ã°ã©ã ã»ãã±ãããåä¿¡ããããŒã«ã«ã»ã€ã³ã¿ãã§ãŒã¹ãæå®ããŸãããŸãã¯ãnullãæå®ããŠãsetInterface(InetAddress)ãŸãã¯setNetworkInterface(NetworkInterface)ã«ãã£ãŠèšå®ãããŠããã€ã³ã¿ãã§ãŒã¹ã«åŸããŸããIOException - åå æã«ãšã©ãŒãçºçããå ŽåããŸãã¯ã¢ãã¬ã¹ããã«ããã£ã¹ãã»ã¢ãã¬ã¹ã§ãªãå ŽåãSecurityException - ã»ãã¥ãªãã£ã»ãããŒãžã£ãååšãããã®checkMulticastã¡ãœãããåå ãèš±å¯ããªãå ŽåãIllegalArgumentException - mcastaddrãnullã§ãããããã®ãœã±ããã«ãã£ãŠãµããŒããããŠããªãSocketAddressãµãã¯ã©ã¹ã§ããå ŽåSecurityManager.checkMulticast(InetAddress)public void leaveGroup(SocketAddress mcastaddr, NetworkInterface netIf) throws IOException
ã»ãã¥ãªãã£ã»ãããŒãžã£ãååšããå Žåããã®ã¡ãœããã¯æåã«ãmcastaddrãåŒæ°ã«æå®ããŠcheckMulticastã¡ãœãããåŒã³åºããŸãã
mcastaddr - é¢ãããã«ããã£ã¹ãã»ã¢ãã¬ã¹netIf - ããŒã«ã«ã»ã€ã³ã¿ãã§ãŒã¹ãæå®ããŸãããŸãã¯ãnullãæå®ããŠãsetInterface(InetAddress)ãŸãã¯setNetworkInterface(NetworkInterface)ã«ãã£ãŠèšå®ãããŠããã€ã³ã¿ãã§ãŒã¹ã«åŸããŸããIOException - é¢ããéã«ãšã©ãŒãçºçããå ŽåããŸãã¯ã¢ãã¬ã¹ããã«ããã£ã¹ãã»ã¢ãã¬ã¹ã§ãªãå ŽåãSecurityException - ã»ãã¥ãªãã£ã»ãããŒãžã£ãååšãããã®checkMulticastã¡ãœããã§ãã®æäœãèš±å¯ãããŠããªãå ŽåãIllegalArgumentException - mcastaddrãnullã§ãããããã®ãœã±ããã«ãã£ãŠãµããŒããããŠããªãSocketAddressãµãã¯ã©ã¹ã§ããå ŽåSecurityManager.checkMulticast(InetAddress)public void setInterface(InetAddress inf) throws SocketException
inf â InetAddressSocketException - 䜿çšããŠãããããã³ã«ã§ãšã©ãŒ(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
NetworkInterfaceSocketException - 䜿çšããŠãããããã³ã«ã§ãšã©ãŒ(TCPãšã©ãŒãªã©)ãçºçããå ŽåãsetNetworkInterface(NetworkInterface)public void setLoopbackMode(boolean disable)
throws SocketException
ãã®ãªãã·ã§ã³ã¯ãã³ããªã®ã§ãã¢ããªã±ãŒã·ã§ã³ã§ã«ãŒãããã¯ã»ã¢ãŒãã®èšå®ã調ã¹ãå¿
èŠãããå Žåã¯ãgetLoopbackMode()ãåŒã³åºããŠãã ããã
disableâLoopbackModeãç¡å¹ã«ããå Žåã¯trueSocketExceptionâå€ã®èšå®äžã«ãšã©ãŒãçºçããå ŽågetLoopbackMode()public boolean getLoopbackMode()
throws SocketException
SocketExceptionâå€ã®ååŸäžã«ãšã©ãŒãçºçããå ŽåsetLoopbackMode(boolean)@Deprecated public void send(DatagramPacket p, byte ttl) throws IOException
setInterfaceã®åœ±é¿ãåããå¯èœæ§ããããŸãã
ã»ãã¥ãªãã£ã»ãããŒãžã£ãååšããå Žåããã®ã¡ãœããã¯ãŸããããã€ãã®ã»ãã¥ãªãã£ã»ãã§ãã¯ãå®è¡ããŸãã æåã«ãp.getAddress().isMulticastAddress()ãtrueã®å Žåããã®ã¡ãœããã¯åŒæ°ãšããŠp.getAddress()ãšttlã䜿ããã»ãã¥ãªãã£ã»ãããŒãžã£ã®checkMulticastã¡ãœãããåŒã³åºããŸãã ãã®åŒã®è©äŸ¡ãfalseã®å Žåããã®ã¡ãœããã¯ä»£ããã«ãã»ãã¥ãªãã£ã»ãããŒãžã£ã®checkConnectã¡ãœããããåŒæ°p.getAddress().getHostAddress()ãšp.getPort()ãæå®ããŠåŒã³åºããŸãã ããããã®ã»ãã¥ãªãã£ã»ãããŒãžã£ã»ã¡ãœããåŒåºãã®çµæãæäœãèš±å¯ãããªãå Žåã¯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) ãã°ãŸãã¯æ©èœãéä¿¡
詳现ãªAPIãªãã¡ã¬ã³ã¹ããã³éçºè
ããã¥ã¡ã³ãã«ã€ããŠã¯ãJava SEã®ããã¥ã¡ã³ããåç
§ããŠãã ããã ãã®ããã¥ã¡ã³ãã«ã¯ãæŠå¿µçãªæŠèŠãçšèªã®å®çŸ©ãåé¿æ¹æ³ãæå¹ãªã³ãŒãäŸãªã©ã®ãéçºè
ã察象ã«ãããã詳现ãªèª¬æãå«ãŸããŠããŸãã
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyãåç
§ããŠãã ããã