当前位置: 首页 > news >正文

TCP封装数据帧


void *send_data(void *arg)    //这是一个发送数据的线程
{int sockfd = init_tcp_cli("192.168.0.148",50000)  //传ip和port,port == 50000是因为大概前五万都被其它服务所占用,50000后是私人ipif(sockfd < 0){return NULL;}unsigned char pack[128] = {0};int len = 0;while(1){len = pack_net_data(data_g,pack)//data_g是一个保存数据的结构体的全局变量ssize_t size = send(sockfd,pack,len,0)if(size < 0){perror("fail send:");break;    }sleep(1)//这里是为了一秒发送一次数据}close(sockfd);return NULL;
}

初始化cli和包装数据:

int init_tcp_cli(const char *ip,unsigned short port)
{int sockfd = socket(AF_INET,SOCK_STREAM,0)if(sockfd < 0){perror("fail socket:");return -1;}struct sockaddr_in ser;ser.sin_family = AF_INET;ser.sin_port = htons(port);ser.sin_addr.s_addr = inet_addr(ip);int ret = connect(sockfd,(struct sockaddr *)&ser,sizeof(ser));if(ret < 0){perror("fail connect:");return -1;}return sockfd;
}int pack_net_data(Data_t data,unsigned char *pack)
{int i = 0;pack[i++] = 0xAA;         //帧头pack[i++] = 20;           //根据协议确定的有效数据长度memcpy(&pack[i],&data.temp,sizeof(data.temp));  //把数据拷贝到pack中i += sizeof(data.temp);   //下标往后移pack[i++] = data.tim.tm_sec; //把秒数放入pack,因为其它数据的写法都一样,就不写完了for(int j = 1; j < i;++j)  //8位和校验{pack[i] += pack[j];}++i;pack[i] = 0xBB   //帧尾++i;return i;
}

http://www.lryc.cn/news/520005.html

相关文章:

  • 数据结构与算法之二叉树: LeetCode 515. 在每个树行中找最大值 (Ts版)
  • 百度视频搜索架构演进
  • 构造函数的原型原型链
  • nginx反向代理及负载均衡
  • 单片机实物成品-011 火灾监测
  • 使用 Docker 在 Alpine Linux 下部署 Caddy 服务器
  • 每日十题八股-2025年1月12日
  • Python中定位包含特定文本信息的元素
  • uniapp实现H5页面内容居中与两边留白,打造类似微信公众号阅读体验
  • 极品飞车6里的赛道简介
  • SAP推出云端ERP解决方案,加速零售行业数字化转型
  • Python爬虫进阶——案例:模拟bilibili登录)
  • 什么是数据分析?
  • 基于springboot的课程作业管理系统源码(springboot+vue+mysql)
  • 多线程之旅:属性及其基本操作
  • 数据表中的数据插入、更新和删除
  • Q_OBJECT宏报错的问题
  • 提升性能300ms:深入解析Spring多表联接查询优化与SQL调优实战
  • 增量导入和全量导入的区别是什么?
  • 【百度智能云客悦智能客服】搭建AI agent智能对话 - 购车推荐
  • 【HTML+CSS+JS+VUE】web前端教程-3-标题标签
  • 逐笔成交逐笔委托Level2高频数据下载和分析:20250102
  • JavaEE之线程池
  • java 中 main 方法使用 KafkaConsumer 拉取 kafka 消息如何禁止输出 debug 日志
  • 【后端面试总结】Golang可能的内存泄漏场景及应对策略
  • Java 反射机制详解
  • 【k8s】scc权限 restricted、anyuid、privileged
  • 2025华数杯国际赛A题完整论文讲解(含每一问python代码+数据+可视化图)
  • ThreadLocal 的使用场景
  • 后端开发 Springboot整合Redis Spring Data Redis 模板