在我的應用程序中,我使用NSStreams
進行客戶端服務器通信。在事件hasbytesAvailable
的delegate
方法,當我讀數據的返回nullNSinputstream讀取數據返回空值?
案例:當長度爲4096,然後讀取失敗並返回零;意思是當長度等於緩衝區大小時,它不能讀取,即使我把maxlength設置爲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,沒有錯誤來了,但它是在的情況下 –