【发布时间】:2014-03-19 18:03:46
【问题描述】:
我正在使用以下代码从服务器套接字中读取数据。一切开始都很好,但是随着事情的进展,返回的数据会被截断并错误地分块。我已经阅读了所有尝试不同的东西,比如更改缓冲区大小和同步代码,但仍然没有运气。一开始我以为是到期了
-(void)stream:(NSStream *)theStream handleEvent:(NSStreamEvent)streamEvent {
被异步调用所以我尝试同步它,但没有运气。我增加了几次缓冲区,但没有运气......我只想从服务器读取的一整行在每次触发时传递给 messagedReceived。我确信我在这里做了一些愚蠢的事情或忽略了一些对某人来说很明显的事情。
-(void)stream:(NSStream *)theStream handleEvent:(NSStreamEvent)streamEvent {
switch (streamEvent) {
case NSStreamEventOpenCompleted:
DLog(@"Connection Opened!!!");
[delegate connectionOpened];
break;
case NSStreamEventHasBytesAvailable:
if (theStream == inputStream) {
uint8_t buffer[1024];
int len = 0;
while ([inputStream hasBytesAvailable]) {
len = [inputStream read:buffer maxLength:sizeof(buffer)];
if (len > 0) {
NSString *output = [[NSString alloc] initWithBytes:buffer length:len encoding:NSASCIIStringEncoding];
if (nil != output) {
DLog(@"%@", output);
[self messageReceived:output];
}
}
}
}
break;
case NSStreamEventErrorOccurred:
DLog(@"Can not connect to the host!");
【问题讨论】:
标签: ios iphone objective-c nsstream nsinputstream