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

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

内容目录

1 概述

2 变更说明

2.1 核心

2.2 GNU/Linux,C++

2.3 C++ QT5

3 下载及安装

3.1 PC版

3.1.1 GNU/Linux

3.1.1.1 C++

3.1.1.1.1 RPM在线仓库

3.1.1.1.2 OsoLinux/RPM

3.1.1.1.3 源代码

3.1.1.2 QT5

3.1.1.2.1 RPM在线仓库

3.1.1.2.2 OsoLinux/RPM

3.1.1.2.3 源代码

3.1.2 Windows

3.1.2.1 QT5

3.1.2.1.1 预编译共享库

3.1.2.1.2 源代码

3.2 安卓版

3.3 Ruby版

4 使用

4.1 关键接口

4.1.1 GNU/Linux,C++

4.1.1.1 发布服务

4.1.2 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 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 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

  5. 5.Windows,C++ QT5

当前版本号:2019.1.23。

2 变更说明

2.1 核心

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

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

  2. 2.增加新的平台支持:Windows C++ QT5

2.2 GNU/Linux,C++

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

  1. 1.提升数据包编码效率

2.3 C++ QT5

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

  1. 1.提升数据包编码效率

  2. 2.修复问题:可能导致进程退出时崩溃。

3 下载及安装

3.1 PC版

3.1.1 GNU/Linux

3.1.1.1 C++

3.1.1.1.1 RPM在线仓库

本软件已经加入MagicRpmShop在线仓库,只需将以下入口RPM包下载并手动安装,日后再打开yumex即可以在线仓库的形式安装本应用。

前面所说的入口RPM包,可到这里来下载:

https://sourceforge.net/projects/magicrpmshop/files/magicrpmshop/magicrpmshop-1779-25_Oso.x86_64.rpm/download

也可扫描二维码通过手机下载,再传送到电脑上

下载这个RPM包之后,使用rpm、yum或yumex来安装这个RPM包即可。

日后,再次打开yumex,或者使用yum即可安装本软件,名为ExistCpp。

3.1.1.1.2 OsoLinux/RPM

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

https://sourceforge.net/projects/magicrpmshop/files/ExistCpp/ExistCpp-2019.1.23-1_Oso.x86_64.rpm/download

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

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

3.1.1.1.3 源代码

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

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

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

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

qmake-qt5

gmake

gmake install

3.1.1.2 QT5

3.1.1.2.1 RPM在线仓库

本软件已经加入MagicRpmShop在线仓库,只需将以下入口RPM包下载并手动安装,日后再打开yumex即可以在线仓库的形式安装本应用。

前面所说的入口RPM包,可到这里来下载:

https://sourceforge.net/projects/magicrpmshop/files/magicrpmshop/magicrpmshop-1779-25_Oso.x86_64.rpm/download

也可扫描二维码通过手机下载,再传送到电脑上

下载这个RPM包之后,使用rpm、yum或yumex来安装这个RPM包即可。

日后,再次打开yumex,或者使用yum即可安装本软件,名为ExistQt。

3.1.1.2.2 OsoLinux/RPM

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

https://sourceforge.net/projects/magicrpmshop/files/ExistQt/ExistQt-2019.1.23-1_Oso.x86_64.rpm/download

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

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

3.1.1.2.3 源代码

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

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

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

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

qmake-qt5

gmake

gmake install

3.1.2 Windows

3.1.2.1 QT5

3.1.2.1.1 预编译共享库

适用于Windows的32位预编译共享库、导入库及头文件压缩包,可在这里下载:

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

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

下载完毕并解压之后,使用qtcreator的“添加库”向导将这个库添加到你的项目中,就行了。

3.1.2.1.2 源代码

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

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

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

下载完毕之后,将得到一个名为“ExistQt-2019.1.23.tar.gz”的gzip压缩包,将其解压之后,得到一个名为“ExistQt-2019.1.23”的目录。使用qtcreator打开这个目录,并编译即可产生出共享库、导入库。

3.2 安卓

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

allprojects {

repositories {

jcenter()

}

}

dependencies

{

 //……

compile 'com.stupidbeauty:libexist:201 9 . 1 . 23 '

//……

}

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 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 C++ QT5

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

https://bitbucket.org/hxcan/libexist/downloads/ExistQtExample-2019.1.23.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-2019.1.23.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-2019.1.23.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 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/2019.1.23

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

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:
支付宝,我叫你一声你敢立即启动吗?

灵桌面:支付宝,我叫你一声你敢立即启动吗?