zoukankan      html  css  js  c++  java
  • TSINGSEE青犀视频智能分析开发中大华设备搜索和批量重置密码的代码实现

    之前我们讲到了TSINGSEE青犀视频团队在开发大华SDK当中的一些流程,本文我们分享下大华设备搜索和批量重置密码的代码实现。

    主要流程图如下:

    分布介绍:

    1、调用 CLIENT_Init 完成 SDK 初始化流程。
    2、调用 CLIENT_StartSearchDevices 搜索局域网内的设备,获取设备信息(不支持多线程调用)。
    3、调用 CLIENT_GetDescriptionForResetPwd 获取重置密码的描述信息。
    (可选)指定方式扫描上一步骤中获取的二维码,获取重置密码的安全码,通过CLIENT_CheckAuthCode 校验安全码。
    (可选)使用 CLIENT_GetPwdSpecification 获取密码规则。
    4、使用 CLIENT_ResetPwd 重置密码。
    5、调用 CLIENT_StopSearchDevices 停止设备的搜索。
    6、调用 CLIENT_LoginEx2,使用 admin 帐户和已重置的密码登录设备。
    7、业务使用完后,调用 CLIENT_Logout 登出设备。
    8、SDK 功能使用完后,调用 CLIENT_Cleanup 释放 SDK 资源。

    示例代码:

    //首先调用接口 CLIENT_StartSearchDevices,在回调函数中获取设备信息 
    //获取密码重置的描述信息 
    NET_IN_DESCRIPTION_FOR_RESET_PWD stIn = {sizeof(stIn)}; 
    strncpy(stIn.szMac, szMac, sizeof(stIn.szMac) - 1); //设置 mac 值 
    strncpy(stIn.szUserName, szUserName, sizeof(stIn.szUserName) - 1);//设置用户名 
    stIn.byInitStatus = bStstus; //bStstus 为搜索设备接口(CLIENT_SearchDevices、CLIENT_StartSearchDevices的回调函数和 CLIENT_SearchDevicesByIPs)返回字段 byInitStatus 的值 
    NET_OUT_DESCRIPTION_FOR_RESET_PWD stOut = {sizeof(stOut)}; 
    char szTemp[360]; 
    stOut.pQrCode = szTemp; 
    CLIENT_GetDescriptionForResetPwd(&stIn, &stOut, 3000, NULL);//在单网卡的情况下最后一个参数可以不 
    填;在多网卡的情况下,最后一个参数填主机 IP。接口执行成功后,stOut 会输出一个二维码,二维码信息地址为 stOut.pQrCode,扫描此二维码,获取重置密码的安全码,此安全码会发送到预留手机号或者邮箱 
    //(可选)校验安全码 
    NET_IN_CHECK_AUTHCODE stIn1 = {sizeof(stIn1)}; 
    strncpy(stIn1.szMac, szMac, sizeof(stIn1.szMac) - 1); //设置 mac 
    strncpy(stIn1.szSecurity, szSecu, sizeof(stIn1.szSecurity) - 1); // szSecu 为上一步骤中发送到预留手机号或者邮箱里的安全码 
    NET_OUT_CHECK_AUTHCODE stOut1 = {sizeof(stOut1)}; 
    bRet = CLIENT_CheckAuthCode(&stIn1, &stOut1, 3000, NULL); //在单网卡的情况下最后一个参数可以不填; 
    在多网卡的情况下,最后一个参数填主机 IP 
    //获取密码规则 
    NET_IN_PWD_SPECI stIn2 = {sizeof(stIn2)}; 
    strncpy(stIn2.szMac, szMac, sizeof(stIn2.szMac) - 1); //设置 mac 
    NET_OUT_PWD_SPECI stOut2 = {sizeof(stOut2)}; 
    CLIENT_GetPwdSpecification(&stIn2, &stOut2, 3000, NULL);//在单网卡的情况下最后一个参数可以不填; 
    在多网卡的情况下,最后一个参数填主机 IP。获取成功的情况下,可根据获取出的设备密码规则设置符合规则的密码,此步骤主要是防止客户设置一些设备不支持的密码格式 
    //重置密码 
    NET_IN_RESET_PWD stIn3 = {sizeof(stIn3)}; 
    strncpy(stIn3.szMac, szMac, sizeof(stIn3.szMac) - 1); //设置 mac 值 
    strncpy(stIn3.szUserName, szUserName, sizeof(stIn3.szUserName) - 1); //设置用户名 
    strncpy(stIn3.szPwd, szPassWd, sizeof(stIn3.szPwd) - 1); //szPassWd 为符合密码规则的重置密码 
    strncpy(stIn3.szSecurity, szSecu, sizeof(stIn1.szSecurity) - 1); // szSecu 为扫描二维码后发送到预留手机号或者邮箱里的安全码 
    stIn3.byInitStaus = bStstus; //bStstus 为搜索设备接口(CLIENT_SearchDevices、CLIENT_StartSearchDevices的回调函数和 CLIENT_SearchDevicesByIPs)返回字段 byInitStatus 的值stIn3.byPwdResetWay = bPwdResetWay; //bPwdResetWay 为搜索设备接口(CLIENT_SearchDevices、 
    CLIENT_StartSearchDevices 的回调函数和 CLIENT_SearchDevicesByIPs)返回字段 byPwdResetWay 的值NET_OUT_RESET_PWD stOut3 = {sizeof(stOut3)}; 
    CLIENT_ResetPwd(&stIn3, &stOut3, 3000, NULL);// 在单网卡的情况下最后一个参数可以不填;在多网卡的情况下,最后一个参数填主机 IP
  • 相关阅读:
    表删除 准备
    爱可生技术文档
    Bran的内核开发指南_中文版
    LINUX 内核内存管理
    Linux Container测试之block IO
    【实时文件同步】rsync+inotify-tools的安装与配置
    openlayer3 加载geoserver发布的WFS服务
    Geoserver跨域请求设置
    Bitmap 图片格式并用 C++ 读写 Bitmap
    C++中的对象初始化
  • 原文地址:https://www.cnblogs.com/TSINGSEE/p/15384865.html
Copyright © 2011-2022 走看看