物联网 对接巴法云平台

一、注册账号

巴法云平台官网:点击跳转

二、登录平台

注意:注册成功的账号都会得到一个密钥,这个密钥是在和云平台通信时必须使用的!!!

三、创建主题

四、建立连接

如果设备需要通过TCP协议和巴法云平台进行通信,则需要知道巴法云平台的IP地址和端口号:

所以为了可以获取巴法云平台的IP地址,需要对巴法云平台的域名进行DNS解析,得到IP。

建立连接代码如下:

    五、字段说明

    注意:向巴法云发送消息时,必须按照以上的字段进行消息的构造,并且每一条消息都必须以”\r\n”作为结束标志。

    六、订阅主题

    七、发布消息

    八、发送心跳

    九、获取时间

    #include <string.h>
    #include <errno.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <netinet/udp.h>
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>
    #include <stdio.h>
     
    #include <netdb.h>
     
    #define  BUFSIZE 512
     
    #define  UID   "f0266ac8a48c97c96ad42822d06864xx"  //用户密钥
     
    #define  TOPIC "led002"         //主题名称
     
    int main(int argc,char **argv)
    {
     
        char recvbuf[BUFSIZE] ={0};
     
        //1.创建TCP套接字
        int tcp_socket = socket(AF_INET, SOCK_STREAM, 0); 
        if(-1 == tcp_socket)
        {
            fprintf(stderr,"create tcp socket error,%s\n",strerror(errno));
            exit(-1);
        }
         
        //2.向服务器发起连接请求
        struct sockaddr_in dest ={0};                   //IPv4地址格式的实例
        dest.sin_family = AF_INET;                      //IPv4协议族
        dest.sin_port   = htons(8344);                  //目标端口,需要转换为网络字节序
        dest.sin_addr.s_addr = inet_addr("119.91.109.180");  //目标地址,需要转换为网络字节序
     
        if(-1 == connect(tcp_socket,(struct sockaddr *)&dest,sizeof(dest)))
        {
            fprintf(stderr,"connect error,%s\n",strerror(errno));
            exit(-2);
        }
     
        printf("connect ok\n");
     
        //3.连接成功后,可以订阅服务器的主题,需要构造消息内容
        char msgbuf[BUFSIZE] ={0};
        sprintf(msgbuf,"cmd=1&uid=%s&topic=%s\r\n",UID,TOPIC);
     
        send(tcp_socket,msgbuf,strlen(msgbuf),0); //向巴法云服务器发送订阅主题的消息
     
        printf("send ok\n");
     
        //接收服务器下发的订阅状态
        recv(tcp_socket,recvbuf,sizeof(recvbuf),0); //读取数据,默认会阻塞
        printf("recv data from bemfa server is %s\n",recvbuf);
        memset(recvbuf,0,BUFSIZE);
     
        while(1)
        {
            //发布消息
            memset(msgbuf,0,BUFSIZE);
            sprintf(msgbuf,"cmd=2&uid=%s&topic=%s&msg=%s\r\n",UID,TOPIC,"off");
            send(tcp_socket,msgbuf,strlen(msgbuf),0); //向巴法云服务器发送订阅主题的消息
     
            sleep(5);
        }
         
     
        return 0;
    }
    
    

    觉得有帮助的话,打赏一下呗。。

               

    需要商务合作(定制程序)的欢迎私信!! 

    ### 如何使用 Royal TSX 配置阿里云私钥 SSH 登录 #### 1. 准备工作 在开始之前,确保已经下载并安装了 Royal TSX,并拥有阿里云实例的私钥文件(通常是 `.pem` 文件)。如果尚未转换为 OpenSSH 格式的密钥,则需要先完成此操作。 可以通过以下命令将 `.pem` 私钥文件转换为适合使用的格式: ```bash ssh-keygen -p -m PEM -f your-private-key.pem chmod 400 your-private-key.pem ``` 上述命令会修改权限并将私钥设置为仅允许当前用户访问[^3]。 --- #### 2. 创建新的 Connection Profile 打开 **Royal TSX** 并创建一个新的 `Connection Profile`: - 在左侧导航栏中右键点击根节点或现有文件夹,选择 **New > Connection**。 - 设置连接名称以便于识别,例如 “My Alibaba Cloud Instance”。 --- #### 3. 配置 SSH 参数 进入新创建的连接配置页面,在 **General Settings** 中填写如下信息: - **Protocol**: 选择 `SSH`. - **Hostname/IP Address**: 输入目标阿里云实例的公网 IP 地址。 - **Port Number**: 默认情况下为 `22`,但如果设置了其他端口,请在此处指定。 - **Username**: 使用阿里云默认用户名(如 `root` 或 `ubuntu`),具体取决于操作系统镜像的选择。 --- #### 4. 添加私钥认证方式 切换到 **Authentication** 页面,执行以下步骤: - 将身份验证方法设为 `Public Key Authentication`。 - 浏览至本地存储位置加载经过处理后的 `.pem` 文件作为 Private Key File。 注意:Royal TSX 可能无法直接接受原始 AWS/Aliyun 提供的那种加密形式的 .pem 文档。因此提前做好转化至关重要[^1]。 --- #### 5. 解决可能遇到的问题——Host Key Verification Failed 错误 当首次尝试建立链接或者更换过服务器之后可能会碰到类似于 `"Host key verification failed"` 的报错消息。这是因为客户端检测到了不同的主机指纹记录冲突所致[^4]。 要清除这种障碍,可以在 macOS 终端运行下面这条指令来移除对应条目下的缓存数据后再重试一次即可恢复正常运作状态: ```bash ssh-keygen -R [target_host_ip_address] ``` 替换 `[target_host_ip_address]` 成实际的目标机器地址部分。 --- #### 6. 测试连接 保存所有更改后双击新建好的 profile 来启动 session 。 如果一切正常的话应该能够成功登陆远端虚拟机而无需额外输入密码。 --- ### 总结 通过以上流程可以顺利利用 Royal TSX 结合阿里云发放的安全证书实现安全便捷高效的远程管理体验[^2].
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值