项目也完成的差不多了,今天来梳理一下AsyncSocket这个框架的一些使用和应该注意的东西。 公司是做儿童手表的,app要通过服务器来与手表端进行数据交流,在使用即使通信这块,本来打算用xmpp的,后面跟服务器端一起沟通后,就直接用了AsyncSocket + protobuf来与服务器进行数据的交换。关于protobuf的介绍,会在下一篇博客中介绍到。

1 首先建立一个单例,我这里叫做OnetalkingSocket,单例中含有一个socket属性
在.h文件中包含了端口号和IP两个变量
@property (nonatomic,copy) NSString *socketHost;
@property (nonatomic,assign) UInt16 socketPort;
2 建立长连接 在给单例的端口号和IP赋值以后就可以连接了
//连接

3 写数据
(1)id:协议号
(2)dic:上传的参数
(3)data:protobuf的类生成的二进制数据
(4)CallbackStr:上传给服务器后,服务器返回过来的数据

//4 读数据



网友评论
Byte byteHeader[2] = {0x4E,0x4D};
NSMutableData *dataHeader =[NSMutableData dataWithBytes:byteHeader length:sizeof(byteHeader)];
//版本号
Byte byteVersion[4]={0x01,0x00,0x00,0x01};
NSData *dataVersion =[NSData dataWithBytes:byteVersion length:sizeof(byteVersion)];
//备用字节
Byte byteBeiYong[8] = {};
NSData *dData = [NSData dataWithBytes: &byteBeiYong length: sizeof(byteBeiYong)];
//时间
Byte byteTime[7] = {};
NSData *dataTime =[NSData dataWithBytes:byteTime length:sizeof(byteTime)];
//命令字
int btyeOrder = commend;
NSData *dataOrder = [NSData dataWithBytes:&btyeOrder length: sizeof(btyeOrder)];
//一位
Byte byteOne[1] = {};
NSData *dataOne =[NSData dataWithBytes:byteOne length:sizeof(byteOne)];
//json体长度
int strLength = (int)[contentData length];//json体, 文本的字节数
NSLog(@"%d",strLength);
int othterLength = 25;//固定的字节数
int i = strLength + othterLength;
NSData *data = [NSData dataWithBytes:&i length:sizeof(i)];
Byte tail[] = {'\0'};
NSData *dataTail = [NSData dataWithBytes:tail length:sizeof(tail)];
[dataHeader appendData:data];//长度
[dataHeader appendData:dataVersion];//版本
[dataHeader appendData:dData];//备用
[dataHeader appendData:dataTime];//时间
[dataHeader appendData:dataOrder];//命令字
[dataHeader appendData:dataOne];//一位
[dataHeader appendData:contentData];//json体
[dataHeader appendData:dataTail];//尾