TCP&UDP协议

简介

通过TCP&UDP自定义协议,与网关设备交互获取设备信息及控制智能家居设备

接入说明

使用TCP&UDP协议接入需要网关作为服务端,使用UDP监听背景音乐主机发送过来的连接广播数据,TCP服务端用来接收协议数据

监听UDP端口:5555

回复UDP端口:5554

协议格式

包头

数据长度

JSON数据

校验和

FF494F54

为JSON数据所占字节数(16进制)

DATA,字符串数据

异或校验,数据长度+数据

的字节进行异或(16进制)

异或算法代码

public static int xorSum(byte[] datas) {
    int temp = datas[1];              // 此处首位取1是因为本协议中第一个数据不参数异或校验,转为int防止结果出现溢出变成负数
    for (int i = 2; i < datas.length; i++) {
        int preTemp = temp;
        int iData;
        if (datas[i] < 0) {
            iData = datas[i] & 0xff;      // 变为正数计算
        } else {
            iData = datas[i];
        }
        if (temp < 0) {
            temp = temp & 0xff;          // 变为正数
        }
        temp ^= iData;
    }
    return temp;
}

建立TCP连接

背景音乐主机发送隔5秒发送一次UDP广播包,网关设备收到后,回复自身TCP服务的IP地址和端口号

当背景音乐主机收到UDP广播回复后会连接网关的TCP服务

交互图

请求JSON格式

响应JSON格式

获取设备

获取智能家居设备信息

请求JSON格式

响应JSON格式

控制设备

设备控制时发送的数据

data的携带参数会因为aciton的不同而改变,可参考请求类型与数据

请求JSON格式

响应JSON格式

最后更新于