android 局域网广播ip,同wifi环境下android设备自动获取socket服务端的ip地址和端口号的方法-UDP广播...

本文介绍了如何在Android应用中利用UDP广播实现局域网内的设备自动发现。通过创建MulticastSocket,设定多点广播地址和端口,服务端周期性发送包含IP和端口信息的广播数据,客户端监听并解析接收到的数据,从而达到实时获取服务端IP和端口的目的。这种方法适用于同一WiFi环境下动态IP的设备间通信。
摘要由CSDN通过智能技术生成

1、最近作项目,须要使用socket作一个常链接,实现实时通讯,可是需求是在同一个wifi环境下,ip地址是动态获取的,这样就形成了服务端地址的不肯定性。解决这个问题的关键就是如何拿到服务端的Ip。咱们能够这样想,服务端能够在得到ip之后经过一种方式把这个地址告诉客户端。这样咱们就注意到UDP多点广播是一个好的解决方法。html

要使用多点广播,须要让一个数据报标有一组目标主机地址,其思想是设置一组特殊网络地址做为多点广播地址,第一个多点广播地址都被看做是一个组,当客户端须要发送、接收广播信息时,加入该组就能够了。IP协议为多点广播提供这批特殊的IP地址,这些IP地址范围是224.0.0.0---239.255.255.255,其中224.0.0.0为系统自用。在java中须要用到MulticastSocket这个类。java

其主要思路就是虚拟一个网络组,只要注册加入这个组的客户端均可以接收到广播者发送的数据。缓存

1、建立一个MulticastSocket类,端口号自定义,可是每一个接收者的端口号要与这个一致网络

mSocket=newMulticastSocket(BROADCAST_PORT);socket

二、虚拟一个多点广播地址,224.0.0.1--239.255.255.255任选。ide

address= InetAddress.getByName(BROADCAST_IP);this

三、创建须要发送出去的数据,自定义的,xxxx是确认信息,还包括局域网ip和socket端口号,为创建socket作准备。spa

sendData= ("xxxx"+"-"+ ip +"-"+ port).getBytes();线程

3、建立一个DatagramPacket对象,包括须要发送的数据,广播地址和端口号code

dataPacket=newDatagramPacket(sendData,sendData.length,address,

BROADCAST_PORT);

四、将该MulticastSocket对象加入到指定的多点广播地址

mSocket.joinGroup(address);//加入广播接收组

五、设置广播生存时间0-255

mSocket.setTimeToLive(1);

6.  使用MulticastSocket对象的send方法 发送数据

mSocket.send(dataPacket);

7.  不接收广播的时候调用leaveGroup方法

mSocket.leaveGroup(address);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值