漫步
TCP传输协议:前2个子节为一个固定的字符,这里以0x809B为例,接着为4个子节(存放content的长度),然后为传输的内容content
TCP传输协议
以下内容都在Demo中,有兴趣可以下载
一、 拼接方式1---使用Byte数组
这里以传输一张图片为例
1.1前期准备---获取一张图片的大小
NSString *path= [[NSBundle mainBundle] pathForResource:@"ceshi" ofType:@"jpeg"];
NSData* content = [NSData dataWithContentsOfFile:path];
int value = (int)content.length;
1.2 将长度value转换为4个字节
Byte byteData[4] = {};
byteData[0] =(Byte)((value & 0xFF000000)>>24);
byteData[1] =(Byte)((value & 0x00FF0000)>>16);
byteData[2] =(Byte)((value & 0x0000FF00)>>8);
byteData[3] =(Byte)((value & 0x000000FF));
//转换为4个字节
1.3 拼接固定字符并转为NSData
Byte byte[] = {0x80,0x9B,byteData[0],byteData[1],byteData[2],byteData[3]};
NSData *temphead = [[NSData alloc]initWithBytes:byte length:6];
1.4 拼接传输的数据(图片)
//拼接content
NSMutableData *m_data = [[NSMutableData alloc] init];
[m_data appendData:temphead];
[m_data appendData:content];
二、 拼接方式2---使用十六进制转换
2.1前期准备---获取一张图片的大小
NSString *path= [[NSBundle mainBundle] pathForResource:@"ceshi" ofType:@"jpeg"];
NSData* content = [NSData dataWithContentsOfFile:path];
int value = (int)content.length;
2.2 将长度value转换十六进制string
//将长度转为十进制string
NSString* decimalString = [NSString stringWithFormat:@"%d",value];
//将十进制string转为十六进制并保证长度为8
NSString* firstHex = [decimalString decimalToHexWithLength:8];//私有方法(