Я успешно открываю сокет для отправки данных в него. Когда я пытался отправить изображение, оно разбилось, и когда я отправляю на него строку, оно работает нормально. Я преобразовываю изображение в данные и затем помещаю эти данные в строку должен быть отправлен на сервер.
Нужна помощь, пожалуйста, помогите
Ниже приведен код, который я использую для соединения с потоком
NSString *urlStr = @"http://182.71.22.107:1935/VideoCalling/5d14a9bc-b816-4c82-bbb7-623d18243a02.sdp/playlist.m3u8";
if (![urlStr isEqualToString:@""])
{
NSURL *website = [NSURL URLWithString:urlStr];
if (!website)
{
NSLog(@"%@ is not a valid URL");
return;
}
NSHost *host = [NSHost hostWithName:[website host]];
// iStream and oStream are instance variables
[NSStream getStreamsToHost:host port:8081 inputStream:&iStream outputStream:&oStream];
[iStream retain];
[oStream retain];
[iStream setDelegate:self];
[oStream setDelegate:self];
NSData *data = UIImageJPEGRepresentation([UIImage imageNamed:@"abc.png"], 90);
// Convert from host to network endianness
uint32_t length = (uint32_t)htonl([data length]);
// Don't forget to check the return value of 'write'
[oStream write:(uint8_t *)&length maxLength:4];
[oStream write:[data bytes] maxLength:length];//writes to stream
[iStream scheduleInRunLoop:[NSRunLoop currentRunLoop]
forMode:NSDefaultRunLoopMode];
[oStream scheduleInRunLoop:[NSRunLoop currentRunLoop]
forMode:NSDefaultRunLoopMode];
[iStream open];
[oStream open];
}
Здесь я пишу в поток
- (void)stream:(NSStream *)stream handleEvent:(NSStreamEvent)eventCode {
int byteIndex;
switch(eventCode) {
case NSStreamEventHasSpaceAvailable:
{
if (stream == oStream) {
//NSString * str = [NSString stringWithFormat:
//
// @ "sdsdfdfggghhfhfh"];
NSString * str = [[NSString alloc] initWithData: кодировка данных: NSUTF16StringEncoding];
NSLog(@"%@,lenght===%d",str,[str length]);
const uint8_t * rawstring = (const uint8_t *)[str UTF8String];
// [oStream write: datap maxLength: strlen (rawstring)];
[oStream write: rawstring maxLength: strlen (15)];
[oStream close];
}
UIAlertView *a = [[UIAlertView alloc]initWithTitle:@"h" message:@"Available" delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil];
[a show];
[a release];
}
break;