Tôi muốn gửi một UIImage đến một máy chủ thông qua một ổ cắm.Làm thế nào để sử dụng tin nhắn viết của NSOutputStream?
a) Tôi mở OutputStream:
- (IBAction)send:(id)sender {
NSURL *website = [NSURL URLWithString:str_IP];
NSHost *host = [NSHost hostWithName:[website host]];
[NSStream getStreamsToHost:host port:1100 inputStream:nil outputStream:&oStream];
[oStream retain];
[oStream setDelegate:self];
[oStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[oStream open];
}
b) Tôi viết NSData để OutputStream sau mở hoàn và xử lý các lỗi nếu lỗi xảy ra.
- (void) stream: (NSStream *) stream handleEvent: (NSStreamEvent) eventCode
{
//printf("EVENT: Start.\n");
switch(eventCode)
{
case NSStreamEventOpenCompleted:
{
//printf("EVENT: Open completed.\n");
if(stream == oStream)
{
//printf("Sending...\n");
NSData *data = UIImageJPEGRepresentation(drawImage.image, 90);
NSInteger x = [oStream write:[data bytes] maxLength:[data length]];
}
break;
}
case NSStreamEventEndEncountered:
{
//printf("EVENT: End encountered.\n");
break;
}
case NSStreamEventHasSpaceAvailable:
{
//printf("EVENT: Has space available.\n");
break;
}
case NSStreamEventHasBytesAvailable:
{
//printf("EVENT: Has bytes available.\n");
break;
}
case NSStreamEventErrorOccurred:
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error Occurred"
message:nil
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
[alert release];
break;
}
case NSStreamEventNone:
{
//printf("EVENT: None.\n");
break;
}
}
//printf("EVENT: End.\n");
}
Khi tôi chạy mã này, NSStreamEventOpenCompleted và NSStreamEventErrorOccurred là phương pháp ghi called.The NSOutputStream đã được gọi là thành công và tất cả các dữ liệu không phải là con số không. Nhưng sau khi dữ liệu được ghi vào oStream, eventCode sẽ thay đổi thành NSStreamEventErrorOccurred.
Vì vậy, tôi nghĩ rằng có lẽ đó không phải là cách chính xác để sử dụng [oStream write]. Cách chính xác để sử dụng tin nhắn này là gì? Tôi thấy thông báo này trả về NSInteger của -1073748088, điều gì có thể là vấn đề?
[oStream streamError] cung cấp cho bạn những gì? – Chuck
Thao tác không thể hoàn thành. Thời gian hoạt động ra –