物联网 对接巴法云平台

一、注册账号

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

二、登录平台

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

三、创建主题

四、建立连接

如果设备需要通过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;
    }
    
    

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

               

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

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值