установить сокет-соединение с потоковым сервером и iphone - PullRequest
0 голосов
/ 13 мая 2011

Я хочу установить сокет-соединение с потоковым сервером (с iphone) и хочу загрузить его содержимое, например, image, .css и т. Д. На iphone. Любая идея или пример кода может помочь мне. Мне нужно написать код только для клиента.

Ответы [ 2 ]

3 голосов
/ 13 мая 2011

Установите соединение следующим образом и измените urlStr на URL вашего сервера

    NSString *urlStr = @"http://192.168.0.108";
    NSURL *website = [NSURL URLWithString:urlStr];
    CFReadStreamRef readStream;
    CFWriteStreamRef writeStream;
    CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)[website host], 1234, &readStream, &writeStream);
    NSInputStream *inputStream = (NSInputStream *)readStream;
    NSOutputStream *outputStream = (NSOutputStream *)writeStream;
    [inputStream setDelegate:self];
    [outputStream setDelegate:self];
    [inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
    [outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
    [inputStream open];
    [outputStream open];

Используйте NSStream Delegate следующим образом для чтения данных

- (void)stream:(NSStream *)stream handleEvent:(NSStreamEvent)eventCode {

    switch(eventCode) {
        case NSStreamEventHasBytesAvailable:

        {

            NSLog(@"Bytes Available");


            uint8_t b[1024];
            unsigned int len = 0;
            NSMutableData *data = [[NSMutableData alloc] init];
            len = [(NSInputStream *)stream read:b maxLength:1024];


            if(!len) {
                if ([stream streamStatus] != NSStreamStatusAtEnd)
                {

                }
            } else {

                [data appendBytes:(const void *)b length:len];
                int bytesRead;
                bytesRead += len;
               //make use of data here

        }
        }

            break;

    }

}
0 голосов
/ 16 мая 2011

Незначительные изменения в коде, который я использовал:

NSHost *host = [NSHost hostWithName:[website host]];
        [NSStream getStreamsToHost:host 
                      port:8766 
                       inputStream:iStream
                      outputStream:oStream];

Вместо

CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)[website host], 1234, &readStream, &writeStream);
    NSInputStream *inputStream = (NSInputStream *)readStream;
    NSOutputStream *outputStream = (NSOutputStream *)writeStream;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...