LicenseManger/sdk/cpp
JiXieShi 87859c7bb8 up 2024-11-16 23:59:15 +08:00
..
README.md up 2024-11-16 23:59:15 +08:00
device_sdk.cpp up 2024-11-16 23:59:15 +08:00
device_sdk.h up 2024-11-16 23:59:15 +08:00

README.md

Device SDK for C++

依赖

  • libcurl
  • nlohmann/json
  • OpenSSL

Windows

  1. vcpkg 安装依赖:
vcpkg install curl:x64-windows
vcpkg install openssl:x64-windows
vcpkg install nlohmann-json:x64-windows

Linux

  1. Ubuntu/Debian:
sudo apt-get install libcurl4-openssl-dev libssl-dev nlohmann-json-dev
  1. CentOS/RHEL:
sudo yum install libcurl-devel openssl-devel nlohmann-json-devel

编译

Windows (Visual Studio)

  1. 添加包含目录:
    • $(vcpkg_root)/installed/x64-windows/include
  2. 添加库目录:
    • $(vcpkg_root)/installed/x64-windows/lib
  3. 添加依赖库:
    • libcurl
    • libssl
    • libcrypto

Linux

g++ -o example example.cpp device_sdk.cpp -lcurl -lssl -lcrypto -I/usr/include/nlohmann

基本用法

初始化

#include "device_sdk.h"
DeviceClient client("http://localhost:8080", "your-32-byte-encrypt-key-here123456");

设备注册

// 不带授权码注册
DeviceInfo device;
device.uid = "device-001";
device.device_model = "test-model";
std::string error;
if (!client.registerDevice(device, error)) {
std::cerr << "注册失败: " << error << std::endl;
return;
}
// 带授权码注册
DeviceInfo deviceWithLicense;
deviceWithLicense.uid = "device-002";
deviceWithLicense.device_model = "test-model";
deviceWithLicense.license_code = "your-license-code";
if (!client.registerDevice(deviceWithLicense, error)) {
std::cerr << "注册失败: " << error << std::endl;
return;
}

设备验证

ValidateResponse response;
std::string error;
if (!client.validateDevice("device-001", response, error)) {
std::cerr << "验证失败: " << error << std::endl;
return;
}
std::cout << "设备状态: " << response.status << std::endl;
std::cout << "授权类型: " << response.license_type << std::endl;
std::cout << "过期时间: " << response.expire_time << std::endl;

更新启动次数

int count;
std::string error;
if (!client.updateStartCount("device-001", count, error)) {
std::cerr << "更新失败: " << error << std::endl;
return;
}
std::cout << "当前启动次数: " << count << std::endl;

绑定授权码

std::string error;
if (!client.bindLicense("device-001", "license-code-123", error)) {
std::cerr << "绑定失败: " << error << std::endl;
return;
}

完整示例

#include <iostream>
#include "device_sdk.h"
int main() {
try {
DeviceClient client("http://localhost:8080", "your-32-byte-encrypt-key-here123456");
std::string error;
// 注册设备
DeviceInfo device;
device.uid = "device-001";
device.device_model = "test-model";
if (!client.registerDevice(device, error)) {
std::cerr << "注册失败: " << error << std::endl;
return 1;
}
std::cout << "设备注册成功" << std::endl;
// 绑定授权码
if (!client.bindLicense("device-001", "license-code-123", error)) {
std::cerr << "绑定失败: " << error << std::endl;
return 1;
}
std::cout << "授权码绑定成功" << std::endl;
// 验证设备
ValidateResponse response;
if (!client.validateDevice("device-001", response, error)) {
std::cerr << "验证失败: " << error << std::endl;
return 1;
}
std::cout << "设备状态: " << response.status << std::endl;
std::cout << "授权类型: " << response.license_type << std::endl;
// 更新启动次数
int count;
if (!client.updateStartCount("device-001", count, error)) {
std::cerr << "更新失败: " << error << std::endl;
return 1;
}
std::cout << "当前启动次数: " << count << std::endl;
} catch (const std::exception& e) {
std::cerr << "发生错误: " << e.what() << std::endl;
return 1;
}
return 0;
}