отправка изображения или видео на сервер с использованием потокового сокета - PullRequest
2 голосов
/ 23 сентября 2011

Я успешно открываю сокет для отправки данных в него. Когда я пытался отправить изображение, оно разбилось, и когда я отправляю на него строку, оно работает нормально. Я преобразовываю изображение в данные и затем помещаю эти данные в строку должен быть отправлен на сервер.

Нужна помощь, пожалуйста, помогите

Ниже приведен код, который я использую для соединения с потоком

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;

1 Ответ

0 голосов
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...