Как я могу передать NSArray через сеть WiFi? - PullRequest
1 голос
/ 23 мая 2011

любой может дать мне хороший способ отправить объект NSArray через сеть Wi-Fi. У меня есть код для отправки текстового сообщения (строки) по сети Wi-Fi. мой код

Отправить

- (void) sendText:(NSString *)string {
    const uint8_t *message = (const uint8_t *)[string UTF8String];


    if (_outStream && [_outStream hasSpaceAvailable])
        if([_outStream write:message maxLength:strlen((char *)message)] == -1)
            NSLog(@"Failed sending data to peer");
}

Сторона приемника

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

        case NSStreamEventHasBytesAvailable:
        {
            if (stream == _inStream) {
                // read it in
                unsigned int len = 0;
                len = [_inStream read:buf maxLength:buffSize];
                buf[len] = '\0';
                if(!len) {
                    if ([stream streamStatus] != NSStreamStatusAtEnd)
                        NSLog(@"Failed reading data from peer");
                } else {
                    NSString *message = [NSString stringWithUTF8String:(char *)buf];    }}

теперь сообщение содержит мое полученное сообщение ... Однако мне нужно отправить объект NSArray через Wi-Fi. Может ли кто-нибудь помочь мне сделать это ..

Ответы [ 2 ]

4 голосов
/ 23 мая 2011

Вы можете использовать NSKeyedArchiver, чтобы получить объект NSData из вашего NSArray, объект NSData - это просто оболочка для двоичных данных, поэтому вы можете отправить его через сокет.Когда вы получили данные, сначала преобразуйте их обратно в объект NSData, а затем используйте класс NSKeyedUnarchiver, чтобы вернуть массив.

1 голос
/ 23 мая 2011

Вам нужен механизм (протокол), который будет отправлять элементы массива со стороны отправителя и таким же образом он будет получать на стороне приема

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