我想從我的c#服務器接收jpeg圖像。奇怪的是,當我使用調試器運行它時,在方法中的任何地方都有一個斷點,它的工作狀態非常好。如果沒有斷點,然後我得到這個錯誤無法從服務器接收jpeg圖像
腐敗JPEG數據:數據段
這裏提前結束是我的代碼
(void)stream:(NSStream *)stream handleEvent:(NSStreamEvent)eventCode {
NSMutableData *data;
data = [NSMutableData new];
switch(eventCode) {
case NSStreamEventHasBytesAvailable:
{
uint8_t buffer[1024];
int len;
while([inputStream hasBytesAvailable]) {
len = [inputStream read:buffer maxLength:sizeof(buffer)];
if (len > 0)
{
[data appendBytes:(const void*)buffer length:sizeof(buffer)];
}
}
UIImage *images = [[UIImage alloc]initWithData:data];
[dvdCover setImage:images];
} break;
case NSStreamEventEndEncountered:
{
//UIImage *images = [[UIImage alloc]initWithData:data];
//[dvdCover setImage:images];
} break;
}
}
errr。您在流結束之前創建圖像。當然這將是腐敗的。使用調試器運行可能會引入延遲,這將導致has bytes調用提供一組完整的數據。您需要取消註銷流中的位,並在可用位註釋掉它。 – Bergasms
我遇到的問題是nsstreameventencountered永遠不會被調用。 – user1585542
我認爲如果你能夠事先知道圖像會持續多久會更好 - 所以你知道何時停止附加字節。當發生這種情況時,您可以構建您的圖像 – gerrytan