我从TCP套接字连接中读取数据,但是服务器不时地向我发送\ 0(这将标记消息的结束)。因此,我没有得到剩下的信息。
我读的是这样的:
uint8_t buf[tcpBufferSize];
unsigned int len = 0;
len = [inputStream read:buf maxLength:tcpBufferSize];
if(len > 0) {
NSMutableData* data=[[NSMutableData alloc] initWithLength:0];
[data appendBytes: (const void *)buf length:len];
NSString *s = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
//here s will be only the part before the \0
[s release];
[data release];
}
例如,如果服务器发送abc \ 0de y将只获得abc,因为\ 0标记结束。
我怎么能收到整条信息?
答案 0 :(得分:3)
您很可能收到了整条信息。字符串用于保存文本,而不是字节数据。如果要保留包括空字符在内的所有数据,则需要将其保留为NSData
对象。如果要提取某些字节并将其解释为文本,则必须自己实现。