IOS 创建TLV数据流
来源:互联网 发布:ip提取器源码 编辑:程序博客网 时间:2024/03/29 19:48
进入新的公司后需要用到tlv格式的数据流,简单的说tlv数据格式就是在一段固定长度字节的数据中填充相应的内容,并且该数据流的每一个特定段的内容按照服务器需要来填充,服务器可以读取,网上查了下说这种数据是最合适计算机读取的格式,所以读取的速度是最快的。
之前只弄过OC和C#,查了下OC中使用TLV完全找不到(个人水平有限,不好意思了=,=,以后还要继续努力啊)。还好OC支持C++和C语言,所以问了下做C++的同事,然后他帮我使用C的函数实现了TLV数据流的创建,对亏这位同事帮我节省了不少时间,自己弄不知道要弄多久。以上。
下面我们就直接上代码看看使用c的方式来创建数据流。
typedef struct{ Byte type; Byte message; short headlen; char user[32]; char sessin[32];}mySender;typedef struct { mySender header; Byte nodetype; char nodever[128];}msg_m_reg;
首选先创建一个组合体,组合体就按照我们的流所需要的顺序来存放并且给其分配相应的大小字节。
接下来就是创建对象,填充组合体,让后转为Byte,再转为data发送
static int isession = 0; mySender header = {0}; header.type = 1; header.message=1; sprintf(header.sessin,"%d",isession); header.headlen = ntohs(197); msg_m_reg newsennd = {0}; memcpy(&newsennd.header, &header,68); newsennd.nodetype = 1; sprintf(newsennd.nodever, "%s", "1.1"); Byte sendbyte[197] = {0}; memcpy(sendbyte, &newsennd, 197); NSData *lastdata = [[NSData alloc] initWithBytes:sendbyte length:197];
这其中比较重要函数就是 memcpy(),这个函数可以把一个内存的内容按照字节顺序重头到尾填入。
同样接受TLV数据的时候也可以用同样的方法来接收
以上便是一些经验的分享,有不对的地方还希望能提出来大家一起交流,谢谢。
0 0
- IOS 创建TLV数据流
- IOS 缓存播放数据流
- TLV 协议
- TLV@C
- tlv解析
- TLV编码
- TLV基础
- TLV协议
- 如何创建一条可靠的实时数据流
- 如何创建一条可靠的实时数据流
- 如何创建一条可靠的实时数据流
- 数据流
- 数据流
- 数据流
- 数据流
- 数据流
- 数据流
- iOS开发,时时获取照相机数据流 RTSP
- poj 1484 Blowing Fuses
- POJ - 1062 昂贵的聘礼(最短路Dijkstra)
- 解决编译opencv3.0时出现的问题undefined reference to `parallel_pthreads_set_threads_num(int)'
- GDOI2016模拟8.14数树数
- hdu1021
- IOS 创建TLV数据流
- Java基础——网络编程(待续)
- **IOS开发之关键字category(类别)详解**
- hud1250
- Java多线程总结笔记(二)—— 线程各状态及转换
- 再谈工厂三姐妹
- hdu 3635 Dragon Balls(带权并查集)
- HDU 5289 Assignment (二分+RMQ)
- Android Studio设置字体 编码格式