GithubHelp home page GithubHelp logo

qq894698049 / lancomm Goto Github PK

View Code? Open in Web Editor NEW

This project forked from fighter-lee/lancomm

0.0 0.0 0.0 1.02 MB

Android局域网通讯,基于UDP和TCP封装的局域网通讯协议框架,处于同一个局域网下的设备,可以相互发现,可以发送广播消息,可以发送点对点消息。

License: Apache License 2.0

Java 98.28% Kotlin 1.72%

lancomm's Introduction

LAN-COMM

1 功能简介

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

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

  1. 主动搜索位于同一局域网下的同一设备;
  2. 通过开关控制是否被其他设备搜索到;
  3. 给处于同一局域网下的所有设备发送广播消息;
  4. 给指定设备发送点对点消息;
  5. 监听广播消息、监听点对点消息;
  6. 监听其他设备上下线通知消息;

demo示例:

demo

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<String, Device> 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);

3 Kotlin扩展函数

3.1 获取管理类

        //获取广播器
        broadcaster

        //获取接收器
        receiver

        //获取搜索器
        searcher

        //获取点对点消息器
        communicator

3.1 发送点对点消息

//发送点对点消息
        sendCommand{
            destIp = "192.168.1.13"
            data = "我点你了,哈哈~".toByteArray()
            callback = object : Command.Callback {
                override fun onSuccess() {
                }

                override fun onReceived() {
                }

                override fun onError(code: Int) {
                }
            }
        }

lancomm's People

Contributors

fighter-lee avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.