【移简书】 [IOS]socket发送消息长度计算

2017-07-24  本文已影响23人  小粑粑铖

在MQTT和Socekt通信中,涉及到用户自己输入的的文本.例如:改名.

但是网关接收数据包的长度是有限制的,如接收的文本只能是刚好100个字节.但是用户输入的名字是多少个字节我们不能确定,这时候就只能用其他字节来补.

上代码:

// 计算长度

intstrlength =0;

char* p = (char*)[hostName cStringUsingEncoding:NSUnicodeStringEncoding];

for(inti=0; i<[hostName lengthOfBytesUsingEncoding:NSUnicodeStringEncoding] ;i++) {

if(*p) {           

 p++;            

strlength++;       

 }else{           

 p++;       

 }   

 }

NSIntegerhostNameLength = (strlength+1)/2;

// 网关限定的总字节长度

Byte bytes[100] = {};

// 用总字节长度减去输入的文本的长度

NSData *byteData24 = [NSData dataWithBytes:&bytes24 length:sizeof(bytes24) - bbb];

// 文本长度+减去的长度加入到要发的数据包里

[mData appendData:[hostName dataUsingEncoding:NSUTF8StringEncoding]];   

 [mData appendData:byteData24];

上一篇下一篇

猜你喜欢

热点阅读