LAN-COMM

1 功能简介

LAN-COMM,即LAN Communicate,局域网通讯技术,基于同一局域网下的设备,相互发现与通讯。

LAN-COMM主要用于在同一局域网下的设备之间的相互发现与通讯。

您可以:

主动搜索位于同一局域网下的同一设备;

通过开关控制是否被其他设备搜索到;

给处于同一局域网下的所有设备发送广播消息;

给指定设备发送点对点消息;

监听广播消息、监听点对点消息;

监听其他设备上下线通知消息;

demo示例:

android wifi开启 广播 android 局域网广播_android局域网 广播包

2 使用说明

2.2 搜索

通过LanCommManager.getSearcher()您可以获取LAN-COMM的搜索器,通过搜索器,您可以主动搜索当前局域网下的所有设备。

也可以通过开关配置是否可以被其他设备搜索到。

搜索其他的设备:

LanCommManager.getSearcher().startSearch(new SearchListener() {
@Override
public void onSearchStart() {
//开始搜索
}
@Override
public void onSearchedNewOne(Device device) {
//搜索到设备
Log.d(TAG, "onSearchedNewOne() " + device.toString());
}
@Override
public void onSearchFinish(HashMap devices) {
//搜索完成
//devices为搜索到的所有设备,它的key为此设备的IP地址
}
});
设置是否可以被其他设备搜索
//设置可以被其他设备搜索
LanCommManager.getSearcher().setCanBeSearched(true);
//设置不能被其他设备搜索
LanCommManager.getSearcher().setCanBeSearched(false);
当前是否可以被其他设备搜索
boolean canBeSearch = LanCommManager.getSearcher().isCanBeSearched();

2.2 消息接收

通过LanCommManager.getReceiver(); 您可以获取到LAN-COMM的消息接收器,通过接收器,可以接收到其他设备发送的广播消息和点对点消息,以及其他设备上下线的通知消息。

接收与不接收其他设备发送的广播消息和点对点消息

DataListener listener = new DataListener() {
@Override
public void onBroadcastArrive(CommData commData) {
//接收到广播消息
}
@Override
public void onCommandArrive(CommData commData) {
//接收到点对点消息
}
};
//接收其他设备发送的广播消息和点对点消息
LanCommManager.getReceiver().addDataListener(listener);
//移除其他设备发送的广播消息和点对点消息的监听
LanCommManager.getReceiver().removeDataListener(listener);

2.3 广播消息

通过LanCommManager.Broadcaster(); 您可以获取到LAN-COMM的广播器,通过广播器,可以给所有设备发送广播消息。

通过广播器发送的消息,可以在[2.2 消息接收]中的消息接收器中接收到发送的消息,自己发送的消息自己也是可以接收到的。

发送广播消息

LanCommManager.getBroadcaster().broadcast("Hello LAN-COMM".getBytes());

2.4 点对点消息

通过LanCommManager.getCommunicator(); 您可以获取到LAN-COMM的点对点通讯器,可以给指定的设备发送消息。

发送的点对点消息可以在[2.2 消息接收]中的消息接收器中接收到发送的消息。

发送点对点消息
//
Command command = new Command().setDestIp(device.getIp())
.setData("我点你了,哈哈~".getBytes())
.setCallback(new Command.Callback() {
@Override
public void onSuccess() {
//发送成功
Trace.d(TAG, "send success");
}
@Override
public void onError(int code) {
//发送失败
Trace.d(TAG, "onError() " + code);
}
@Override
public void onReceived() {
//对方已收到
Trace.d(TAG, "对方已收到");
}
});
LanCommManager.getCommunicator().sendCommand(command);