一、最近做项目,需要使用socket做一个常连接,实现实时通信,但是需求是在同一个wifi环境下,ip地址是动态获取的,这样就造成了服务端地址的不确定性。解决这个问题的关键就是如何拿到服务端的Ip。我们可以这样想,服务端可以在获得ip以后通过一种方式把这个地址告诉客户端。这样我们就注意到UDP多点广播是一个好的解决方法。
要使用多点广播,需要让一个数据报标有一组目标主机地址,其思想是设置一组特殊网络地址作为多点广播地址,第一个多点广播地址都被看作是一个组,当客户端需要发送、接收广播信息时,加入该组就可以了。IP协议为多点广播提供这批特殊的IP地址,这些IP地址范围是224.0.0.0---239.255.255.255,其中224.0.0.0为系统自用。在java中需要用到MulticastSocket这个类。
其主要思路就是虚拟一个网络组,只要注册加入这个组的客户端都可以接收到广播者发送的数据。
1、创建一个MulticastSocket类,端口号自定义,但是每个接收者的端口号要与这个一致
mSocket = new MulticastSocket(BROADCAST_PORT);
2、虚拟一个多点广播地址,224.0.0.1--239.255.255.255任选。
address<