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

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

内容目录

1 概述

2 变更说明

2.1 GNU/Linux,C++

2.2 GNU/Linux,C++ QT5

2.3 安卓,Java

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 安卓版

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.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安装包

5 文档

5.1.1 GNU/Linux,C++

5.1.2 GNU/Linux,C++ QT5

5.1.3 安卓,Java

6 已知用户

6.1 兰心输入法

1 概述

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

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

  1. 1.安卓,Java;

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

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

当前版本号:2016.9.9。

2 变更说明

2.1 GNU/Linux,C++

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

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

  2. 2.接收局域网内其它设备的主动扫描,并且回复,报告自己的存在。

2.2 GNU/Linux,C++ QT5

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

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

  2. 2.接收局域网内其它设备的主动报告,得知其它设备的存在。

2.3 安卓,Java

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

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

  2. 2.接收局域网内其它设备的主动报告,得知其它设备的存在。

  3. 3.向局域网内其它设备发起主动扫描,并且从回复中得知其它设备的存在。

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-2016.9.9-15_Oso.x86_64.rpm

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

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

3.1.1.1.2 源代码

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

https://bitbucket.org/hxcan/libexist/downloads/ExistCpp-2016.9.9.zip

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

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

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-2016.9.9-15_Oso.x86_64.rpm

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

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

3.1.1.2.2 源代码

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

https://bitbucket.org/hxcan/libexist/downloads/ExistQt-2016.9.9.zip

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

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

qmake-qt5

gmake

gmake install

3.2 安卓

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

allprojects {

repositories {

jcenter()

}

}

dependencies

{

 //……

compile 'com.stupidbeauty:libexist:2016.9.9'

//……

}

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.2 示例

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

4.2.1 GNU/Linux,C++

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

https://bitbucket.org/hxcan/libexist/downloads/ExistCppExample-2016.9.9.tar.xz

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

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

4.2.2 GNU/Linux,C++ QT5

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

https://bitbucket.org/hxcan/libexist/downloads/ExistQtExample-2016.9.9.tar.xz

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

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

4.2.3 安卓,Java

4.2.3.1 发布示例

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

4.2.3.1.1 源代码

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

https://bitbucket.org/hxcan/libexist/downloads/ExistAndroidPublishExample-2016.9.9.tar.xz

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

编译运行起来之后,使用“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-2016.9.9.tar.xz

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

编译运行起来之后,可发现局域网中其它设备通过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所发布的服务。

5 文档

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

5.0.1 GNU/Linux,C++

点击以下链接下载文档:

https://bitbucket.org/hxcan/libexist/downloads/ExistCppApiDocument-2016.9.9.tar.xz

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

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

5.0.2 GNU/Linux,C++ QT5

点击以下链接下载文档:

https://bitbucket.org/hxcan/libexist/downloads/ExistQtApiDocument-2016.9.9.tar.xz

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

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

5.0.3 安卓,Java

点击以下链接下载文档:

https://bitbucket.org/hxcan/libexist/downloads/ExistAndroidApiDocument-2016.9.9.tar.xz

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

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

6 已知用户

6.1 兰心输入法

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

狂野

未知美人

刘珊玲

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

为OsoLinux用户提供的RPM包仓库

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