StupidBeauty
Read times:792Posted at: - no title specified

我存在:libexist,让局域网内的不同设备可以互相发现

内容目录

1 概述

2 变更说明

2.1 核心

2.2 GNU/Linux,C++

2.3 GNU/Linux,C++ QT5

2.4 安卓,Java

2.5 Ruby

3 下载及安装

3.1 PC版

3.1.1 GNU/Linux

3.1.1.1 C++

3.1.1.1.1 OsoLinux/RPM

3.1.1.1.2 源代码

3.1.1.2 QT5

3.1.1.2.1 OsoLinux/RPM

3.1.1.2.2 源代码

3.2 安卓版

3.3 Ruby版

4 使用

4.1 关键接口

4.1.1 GNU/Linux,C++

4.1.1.1 发布服务

4.1.2 GNU/Linux,C++ QT5

4.1.2.1 发布服务

4.1.2.2 扫描其它设备提供的服务

4.1.3 安卓,Java

4.1.3.1 发布服务

4.1.3.2 扫描其它设备提供的服务

4.1.4 Ruby

4.1.4.1 发布服务

4.2 示例

4.2.1 GNU/Linux,C++

4.2.2 GNU/Linux,C++ QT5

4.2.3 安卓,Java

4.2.3.1 发布示例

4.2.3.1.1 源代码

4.2.3.1.2 APK安装包

4.2.3.2 扫描示例

4.2.3.2.1 源代码

4.2.3.2.2 APK安装包

4.2.4 Ruby

5 文档

5.1.1 GNU/Linux,C++

5.1.2 GNU/Linux,C++ QT5

5.1.3 安卓,Java

5.1.4 Ruby

6 已知用户

6.1 兰心输入法

6.2 自动无线安卓调试器

6.3 漂亮聊天

6.4 安卓即音箱

6.5 漂亮浏览器

6.6 调码扫描器

1 概述

libexist,是一个跨平台的开发库,目的是让局域网内的手机、电脑等设备可以互相发现

目前支持以下平台/设备/语言:

  1. 1.安卓,Java;

  2. 2.GNU/Linux,C++;

  3. 3.GNU/Linux,C++ QT5

  4. 4.Ruby。

当前版本号:2018.8.11。

2 变更说明

2.1 核心

核心模块,具有以下变更:

  1. 1.增加报告的协议类型:TCP。

  2. 2.增加新的语言支持:Ruby。

2.2 GNU/Linux,C++

GNU/Linux,C++版,具有以下变更:

  1. 1.提升网络通信效率。

  2. 2.修复问题:未连接网络时行为不正确。

2.3 GNU/Linux,C++ QT5

GNU/Linux,C++ QT5版,具有以下变更:

  1. 1.修复问题:未连接网络时行为不正确

  2. 2.提升稳定性。

2.4 安卓,Java

安卓,Java版,具有以下变更:

  1. 1.提升网络通信效率。

  2. 2.主动向局域网其它设备报告自己的存在。

  3. 3.修复问题:未连接网络时行为不正确。

2.5 Ruby

Ruby版本,具有以下变更:

  1. 1.主动向局域网其它设备报告自己的存在。

3 下载及安装

3.1 PC版

3.1.1 GNU/Linux

3.1.1.1 C++

3.1.1.1.1 OsoLinux/RPM

适用于OsoLinux及RPM系列发行的RPM安装包,可在这里下载:

https://bitbucket.org/hxcan/libexist/downloads/ExistCpp-2018.8.11-15_Oso.x86_64.rpm

也可扫描下面的二维码以下载到妳的手机上,然后再传送到自己的电脑

下载完毕之后,使用rpm命令或yum来安装这个RPM包,就行了。

3.1.1.1.2 源代码

源代码压缩包,可在这里下载:

https://bitbucket.org/hxcan/libexist/downloads/ExistCpp-2018.8.11.tar.gz

也可扫描下面的二维码以下载到妳的手机上,然后再传送到自己的电脑

下载完毕之后,将得到一个名为“ExistCpp-2018.8.11.tar.gz”的gzip压缩包,将其解压之后,得到一个名为“ExistCpp-2018.8.11”的目录。在这个目录中,执行以下命令行命令即可编译安装完成:

qmake-qt5

gmake

gmake install

3.1.1.2 QT5

3.1.1.2.1 OsoLinux/RPM

适用于OsoLinux及RPM系列发行的RPM安装包,可在这里下载:

https://bitbucket.org/hxcan/libexist/downloads/ExistQt-2018.8.11-15_Oso.x86_64.rpm

也可扫描下面的二维码以下载到妳的手机上,然后再传送到自己的电脑

下载完毕之后,使用rpm命令或yum来安装这个RPM包,就行了。

3.1.1.2.2 源代码

源代码压缩包,可在这里下载:

https://bitbucket.org/hxcan/libexist/downloads/ExistQt-2018.8.11.tar.gz

也可扫描下面的二维码以下载到妳的手机上,然后再传送到自己的电脑

下载完毕之后,将得到一个名为“ExistQt-2018.8.11.tar.gz”的gzip压缩包,将其解压之后,得到一个名为“ExistQt-2018.8.11”的目录。在这个目录中,执行以下命令行命令即可编译安装完成:

qmake-qt5

gmake

gmake install

3.2 安卓

安卓版libexist库不需要专门的下载步骤,在安卓开发项目中声明对libexist库的依赖即可:

allprojects {

repositories {

jcenter()

}

}

dependencies

{

 //……

compile 'com.stupidbeauty:libexist:201 8 . 8 . 11 '

//……

}

3.3 Ruby版

使用gem即可安装Ruby版libexist库

gem install ExistRuby

4 使用

4.1 关键接口

以下说明libexist各个不同语言/平台版本的关键接口。

4.1.1 GNU/Linux,C++

4.1.1.1 发布服务

class ServicePublisher

{

public :

ServicePublisher (); //!<默认构造函数。

void publishService( string LanServiceName, quint16 LanServicePort, exist :: ServicePublishMessage :: ServiceProtocolType LanServiceProtocolType); //!<发布服务。

};

构造一个ServicePublisher对象,调用它的 publishService( string LanServiceName, quint16 LanServicePort, exist :: ServicePublishMessage :: ServiceProtocolType LanServiceProtocolType) 方法即可向局域网内其它设备发布出自己的服务。

4.1.2 GNU/Linux,C++ QT5

4.1.2.1 发布服务

class ServicePublisher : public QObject

{

Q_OBJECT

public :

ServicePublisher (); //!<默认构造函数。

void publishService( QString LanServiceName, quint16 LanServicePort, exist :: ServicePublishMessage :: ServiceProtocolType LanServiceProtocolType); //!<发布服务。

};

构造一个ServicePublisher对象,调用它的 publishService( QString LanServiceName, quint16 LanServicePort, exist :: ServicePublishMessage :: ServiceProtocolType LanServiceProtocolType) 方法即可向局域网内其它设备发布出自己的服务。

4.1.2.2 扫描其它设备提供的服务

class ServicePublisher : public QObject

{

Q_OBJECT

signals :

void serviceDiscovered( QString serviceName, quint16 servicePort, ServicePublishMessage :: ServiceProtocolType serviceProtocolType, string address); //!<信号,发现了服务。

public :

ServicePublisher (); //!<默认构造函数。

}; //class EXISTQTSHARED_EXPORT GameInfo:public QObject

构造一个ServicePublisher对象,将某个信号槽连接到它的 serviceDiscovered( QString serviceName, quint16 servicePort, ServicePublishMessage :: ServiceProtocolType serviceProtocolType, string address) 信号 即可 在发现了 局域网内其它设备发布的服务 时,得到通知

4.1.3 安卓,Java

4.1.3.1 发布服务

public class ServicePublisher

{

/**

* 构造函数。

* @param serviceContext 服务上下文。

*/

public ServicePublisher(Context serviceContext)

{

                // ……

} //public ServicePublisher()

/**

*   发布服务。

*/

public void publishService(String LanServiceName, int LanServicePort,ExistMessageContainer.ServicePublishMessage.ServiceProtocolType LanServiceProtocolType)

{

                // ……

} //public void publishService(LanServiceName,LanServicePort,LanServiceProtocolType)

}

构造一个ServicePublisher对象,调用它的 publishService(String LanServiceName, int LanServicePort,ExistMessageContainer.ServicePublishMessage.ServiceProtocolType LanServiceProtocolType) 方法即可向局域网内其它设备发布出自己的服务。

4.1.3.2 扫描其它设备提供的服务

public class ServicePublisher

{

/**

* 停止扫描。

*/

public void stopScanning()

{

      //……

} //public void stopScanning()

/**

* 开始扫描。

*/

public void startScanning()

{

      //……

} //public void startScanning()

/**

* 设置服务发现事件监听器。

* @param serviceDiscoveredListener 要设置的监听器。

*/

public void setServiceDiscoveredListener(ServiceDiscoveredListener serviceDiscoveredListener)

{

      //……

} //public void setServiceDiscoveredListener(ServiceDiscoveredListener serviceDiscoveredListener)

/**

* 构造函数。

* @param serviceContext 服务上下文。

*/

public ServicePublisher(Context serviceContext)

{

      //……

} //public ServicePublisher()

}

构造一个ServicePublisher对象,调用setServiceDiscoveredListener(ServiceDiscoveredListener serviceDiscoveredListener)方法向它注册一个“服务发现事件监听器”,然后调用 startScanning() 方法以开始扫描局域网内提供服务的设备。当有局域网的设备被发现时,监听器的 onServiceDiscovered(ExistMessageContainer.ExistMessage videoStreamQueryResponseMessage, InetAddress senderAddress) 方法将被调用,以告知当前扫描到了局域网中的某个设备。

当妳不想再进行扫描时,调用 stopScanning() 方法即可停止扫描。

4.1.4 Ruby

4.1.4.1 发布服务

class ExistRuby

# Publish a service to the LAN.

#

# Example:

#   >> existRuby=ExistRuby.new

#   >> existRuby.publishService("fp_serverPython", 10086, exist::ServicePublishMessage::ServiceProtocolType::GRPC)

#

# Arguments:

#   lanServiceName: (String)

#   lanServicePort: (int)

#   lanServiceProtocolType: (enum)

def publishService(lanServiceName, lanServicePort, lanServiceProtocolType)

#…...

end

end

构造一个ExistRuby对象,调用它的publishService(lanServiceName, lanServicePort, lanServiceProtocolType) 方法即可向局域网内其它设备发布出自己的服务。

4.2 示例

以下示例具体展示了各个不同语言/平台版本的用法。

4.2.1 GNU/Linux,C++

点击以下链接下载示例源代码:

https://bitbucket.org/hxcan/libexist/downloads/ExistCppExample-2018.8.11.tar.gz

或扫描以下二维码以下载到手机,然后传送到电脑:

编译运行起来之后,使用“C++ QT5示例”或“安卓扫描示例”都可发现局域网中一个名为“ ExistCppExample ”的服务。

4.2.2 GNU/Linux,C++ QT5

点击以下链接下载示例源代码:

https://bitbucket.org/hxcan/libexist/downloads/ExistQtExample-2018.8.11.tar.gz

或扫描以下二维码以下载到手机,然后传送到电脑:

编译运行起来之后,即可发现局域网中一个名为“ ExistCppExample ”的服务,那是由“C++示例”发布出来的。

4.2.3 安卓,Java

4.2.3.1 发布示例

使用此示例可向局域网内发布一个名为“ExistAndroidPublishExample”的服务。

4.2.3.1.1 源代码

点击以下链接下载示例源代码:

https://bitbucket.org/hxcan/libexist/downloads/ExistAndroidPublishExample-2018.8.11.tar.gz

或扫描以下二维码以下载到手机,然后传送到电脑:

编译运行起来之后,使用“C++ QT5示例”或“安卓扫描示例”都可发现局域网中一个名为“ Exist AndroidPublish Example ”的服务。

4.2.3.1.2 APK安装包

这个示例应用也发布到Google Play了。

点击以下链接下载示例应用:

https://play.google.com/store/apps/details?id=com.stupidbeauty.libexist.publishexample&hl=zh_HK

或扫描以下二维码以打开Google Play Store应用以下载示例应用

运行起来之后,使用“C++ QT5示例”或“安卓扫描示例”都可发现局域网中一个名为“ Exist AndroidPublish Example ”的服务。

4.2.3.2 扫描示例

使用此示例可发现局域网中通过libexist发布出来的服务。

4.2.3.2.1 源代码

点击以下链接下载示例源代码:

https://bitbucket.org/hxcan/libexist/downloads/ExistAndroidScanExample-2018.8.11.tar.gz

或扫描以下二维码以下载到手机,然后传送到电脑:

编译运行起来之后,可发现局域网中其它设备通过libexist所发布的服务。

4.2.3.2.2 APK安装包

这个示例应用也发布到Google Play了。

点击以下链接下载示例应用:

https://play.google.com/store/apps/details?id=com.stupidbeauty.libexist.scanningexample&hl=zh_HK

或扫描以下二维码以打开Google Play Store应用以下载示例应用

运行起来之后,可发现局域网中其它设备通过libexist所发布的服务。

4.2.4 Ruby

点击以下链接下载示例源代码:

https://bitbucket.org/hxcan/libexist/downloads/ExistRubyExample-2018.8.11.tar.gz

或扫描以下二维码以下载到手机,然后传送到电脑:

运行起来之后,使用“C++ QT5示例”或“安卓扫描示例”都可发现局域网中一个名为“ Exist Ruby Example ”的服务。

5 文档

以下是各个不同版本的文档。

5.0.1 GNU/Linux,C++

点击以下链接下载文档:

https://bitbucket.org/hxcan/libexist/downloads/ExistCppApiDocument-2018.8.11.tar.gz

或扫描以下二维码以下载到手机,然后传送到电脑:

解压之后,打开其中的index.html即是接口文档。

5.0.2 GNU/Linux,C++ QT5

点击以下链接下载文档:

https://bitbucket.org/hxcan/libexist/downloads/ExistQtApiDocument-2018.8.11.tar.gz

或扫描以下二维码以下载到手机,然后传送到电脑:

解压之后,打开其中的index.html即是接口文档。

5.0.3 安卓,Java

点击以下链接下载文档:

https://bitbucket.org/hxcan/libexist/downloads/ExistAndroidApiDocument-2018.8.11.tar.gz

或扫描以下二维码以下载到手机,然后传送到电脑:

解压之后,打开其中的index.html即是接口文档。

5.0.4 Ruby

点击以下链接在线查看文档:

https://www.rubydoc.info/gems/ExistRuby/2018.8.11

或扫描以下二维码在手机上查看文档:

6 已知用户

6.1 兰心输入法

兰心输入法 的电脑端和安卓端使用libexist互相发现。

6.2 自动无线安卓调试

自动无线安卓调试 的电脑端和安卓端使用libexist互相发现。

6.3 漂亮聊天

漂亮聊天 在各个平台上的版本,都使用libexist互相发现。

6.4 安卓即音箱

安卓 即音箱 的电脑端和安卓端使用libexist互相发现。

6.5 漂亮浏览器

漂亮浏览器 ,使用libexist来发现 调码扫描器 ,并发起二维码扫描请求。

6.6 调码扫描器

调码扫描器,使用libexist来发布自己的二维码扫描服务。

Your opinions
Your name:Email:Website url:Opinion content:
- no title specified

漂亮的笨蛋浏览器/2018.10.8/版本

 
??Like this article? Give us some tips.??