一、注册账号
巴法云平台官网:点击跳转
二、登录平台
注意:注册成功的账号都会得到一个密钥,这个密钥是在和云平台通信时必须使用的!!!
三、创建主题
四、建立连接
如果设备需要通过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;
}
觉得有帮助的话,打赏一下呗。。
需要商务合作(定制程序)的欢迎私信!!