В моем приложении я использую NSStreams
для связи с клиентским сервером. В методе delegate
в случае hasbytesAvailable
, когда я читаю данные его возвращение нулевойЧтение данных NSinputstream возвращает нулевое значение?
Корпус: когда длина 4096, то прочитанная терпит неудачу и возвращает ноль; Значит, когда длина равна размеру буфера, которую он не читает, даже если я поместил максимальную длину до 4000 и размер буфера до 4096, тогда также, когда 4000 байт считываются с ошибкой. что делать?
Вот код:.
case NSStreamEventHasBytesAvailable:
if (aStream == inputStream) {
uint8_t buffer[4096];
int len;
while ([inputStream hasBytesAvailable]) {
len = (int)[inputStream read:buffer maxLength:sizeof(buffer)];
NSLog(@"\nThe length is -- %d\n",len);
if (len > 0) {
NSData *data = [[NSData alloc] initWithBytes:buffer length:len];
output = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
// output = [[NSString alloc] initWithBytes:buffer length:len encoding:NSUTF8StringEncoding];
}
}
}
NSLog(@"\n\n%@\n\n",output);
Я не вижу каких-либо сообщений об ошибках, так что гадать. – Droppy
Я не знаю, но может ли это быть связано с этим: http://stackoverflow.com/questions/36894972/why-doesnt-cast-work-from-nsdata-to-string-swift/? Я имею в виду, что когда буфер заполнен (длина - размер буфера), это означает, что есть большая вероятность, что это только часть данных? – Larme
@Droppy, ошибка не возникает, но она возвращает нуль в случае –