Как решить Multiple Address в приложении ios на основе Bonjour? - PullRequest
0 голосов
/ 03 января 2012

Я пытаюсь реализовать приложение на основе Banjour в ios.Я полностью реализую успех, также отправляя и получая данные с одного iphone на другой iphone.После просмотра сервисов все остальные устройства в работе.и отобразить в таблице.

enter image description here

Теперь я хочу выбрать некоторые устройства в табличном представлении и отправить данные на выбранные устройства

enter image description here

Для этого я создал только один сокет в каждом устройстве.

CFSocketContext socketCtxt = {0, self, NULL, NULL, NULL};   
    witap_socket = CFSocketCreate(kCFAllocatorDefault, PF_INET6, SOCK_STREAM, IPPROTO_TCP, kCFSocketAcceptCallBack, (CFSocketCallBack)&TCPServerAcceptCallBack, &socketCtxt);

    if (witap_socket != NULL)        
    {
        protocolFamily = PF_INET6;
    }
    else 
    {
        witap_socket = CFSocketCreate(kCFAllocatorDefault, PF_INET, SOCK_STREAM, IPPROTO_TCP, kCFSocketAcceptCallBack, (CFSocketCallBack)&TCPServerAcceptCallBack, &socketCtxt);        
        if (witap_socket != NULL)
        {
            protocolFamily = PF_INET;
        }
    }    

Теперь я хочу отправить данные на выбранные устройства.для этого я хранил выбранный NSNetService (т.е. устройства) другого NSMutableArray.При использовании Нажмите кнопку отправки, будет вызвано определенное действие.

-(void)SendActionFunction
{   
       for(int idx=0;idx<[selectedSer count];idx++)
    {
        NSNetService *service = [self.selectedSer objectAtIndex:idx];  
        NSLog(@"service......%@",[service name]);
        self.currentResolve = [self.selectedSer objectAtIndex:idx]; 
        [self.currentResolve setDelegate:self];     
        [self.currentResolve resolveWithTimeout:0.0];
    }
}

, если я пытаюсь разрешить адрес для каждого устройства (код выше).Это будет разрешено только для первого устройства.и получение ошибки

  • (код ошибки = -72003]

еще одна проблема, если я разрешил адрес для устройства, которое оно автоматически удаляет из Tableview.

Итак, мои сомнения:

  1. Почему выбрано выбранное устройство?
  2. Теперь я создаю сокет на основе TCP, Как добавить адрес назначения для отправки данных?
  3. Можно ли отправлять данные из одного сокета в несколько пунктов назначения?

Ответы [ 2 ]

0 голосов
/ 26 апреля 2013

Как насчет разрешения и отправки данных по 1 устройству на 1 устройство? Звучит проще: D

Кстати, есть действительно хорошая библиотека сокетов, которую я использовал для проекта:

https://github.com/robbiehanson/CocoaAsyncSocket

0 голосов
/ 18 июня 2012

Согласно определению Apple, CFSocket - это канал связи, реализованный с разъемом BSD.

Вы установили соединение разъема между устройствами.Но для отправки и получения данных вы должны использовать NSStreams.Документацию можно найти здесь

Я вижу, что вы используете образец кода Apple Witap в качестве справочного.

Для отправки и получения данных используйте NSStreamDelegate также.

...