
TCP发送CJSON字符串示例代码
在调用
发布日期:2021-05-07 20:42:39
浏览次数:18
分类:精选文章
本文共 1272 字,大约阅读时间需要 4 分钟。
在实际编写代码时,确保对JSON数据结构的正确处理至关重要。以下是关于实现一个TCP发送心跳机制的关键步骤说明:
1. JSON对象的构建
首先,我们创建一个空的cJSON对象作为根节点:
cJSON * root11 = cJSON_CreateObject();
接着,为根节点添加必要的字段。例如:
cJSON_AddItemToObject(root11, "cmd", cJSON_CreateString("heartbeat"));cJSON_AddItemToObject(root11, "model", cJSON_CreateString(XUNJIAN_ROBOT_TYPE));cJSON_AddItemToObject(root11, "robot_id", cJSON_CreateNumber(Lock_Code));
然后,为"data"
字段创建一个子对象:
cJSON * item11 = cJSON_CreateObject();cJSON_AddItemToObject(item11, "ip", cJSON_CreateString(ipsbuf));cJSON_AddItemToObject(item11, "cishu", cJSON_CreateNumber(fasong_cishu));
最后,将"data"
字段添加到根节点中:
cJSON_AddItemToObject(root11, "data", item11);
2. 数据的发送
使用rt_sprintf
函数格式化IP地址:
rt_sprintf(ipsbuf, "%d.%d.%d.%d", my_work_ipaddr[0], my_work_ipaddr[1], my_work_ipaddr[2], my_work_ipaddr[3]);
将根节点转换为字符串:
out_str11 = cJSON_PrintUnformatted(root11);
发送数据到TCP socket:
ret = send(mytcp_sock, out_str11, strlen(out_str11), 0);
处理发送结果:
if (ret < 0) { return;} else if (ret == 0) { rt_kprintf("\n Send warning,send function return 0.\r\n");}
3. 内存管理
确保正确释放所有动态分配的内存:
cJSON_Delete(root11);rt_free(out_str11);
特别注意以下几点:
cJSON_Delete
函数会自动释放根节点及其所有子节点,减少手动管理的复杂性rt_free
用于释放动态分配的内存,避免内存泄漏cJSON_PrintUnformatted
后,及时释放生成的字符串,防止内存泄漏通过以上步骤,可以实现一个稳定且高效的TCP心跳机制,在实际应用中需要根据具体需求调整相关参数和逻辑。