swr*_*rap 6 java networking network-programming datagram multicastsocket
我正在使用MulticastSocket,当我尝试加入一个组时,当我在"localhost"ip上运行组时,它永远不会工作.但是,我发现这篇文章http://lycog.com/programming/multicast-programming-java/表明范围应该在224.0.0.1和239.255.255.254之间.当我从该IP中创建一个InetAddress并加入该组时,它就可以工作了.请解释为什么这是必要的.
例:
InetAddress group = InetAddress.getByName("localhost");
int port = 8888;
MulticastSocket socket = new MulticastSocket(port);
socket.joinGroup(group);
Run Code Online (Sandbox Code Playgroud)
//抛出
Unable to connect to host:localhost on port:8888
java.net.SocketException: Not a multicast address
Run Code Online (Sandbox Code Playgroud)
有效的示例:
InetAddress group = InetAddress.getByName("224.0.0.1");
int port = 8888;
MulticastSocket socket = new MulticastSocket(port);
socket.joinGroup(group);
Run Code Online (Sandbox Code Playgroud)
一切都与标准有关.关于多播地址的wiki文章的简短片段:
IPv4多播地址由1110的前导地址位定义,当该组地址被指定为D类时,源自早期因特网的有类网络设计.该组的无类别域间路由(CIDR)前缀是224.0. 0.0/4.该组包括从224.0.0.0到239.255.255.255的地址.
此外,几乎同样是在上述的javadoc为MulticastSocket
组播组由D类IP地址和标准UDP端口号指定.D类IP地址在224.0.0.0到239.255.255.255范围内.地址224.0.0.0是保留的,不应使用.
所以,是的,当您尝试加入具有超出此范围的组地址的多播组(如localhost 127.0.0.1)时,您会收到此异常.
归档时间: |
|
查看次数: |
6164 次 |
最近记录: |