txtRecord имеет значение null при поиске служб (bonjour) с использованием библиотек MYNetwork - PullRequest
0 голосов
/ 01 декабря 2011

В настоящее время я работаю с MYNetwork библиотекой классов Bonjour и у меня возникла проблема с обнаружением текстовых записей.Когда появляется новый сервис, его txt-запись каждый раз равна нулю.

На моей стороне сервера я устанавливаю txt-запись следующим образом:

self.server = [[MYBonjourRegistration alloc] initWithServiceType: @"_blipecho._tcp." port:9121];
[server setString:@"Cyprian" forTXTKey:@"Name"];
[server start];

Затем в браузере я обнаруживаю и записываю данные:

- (void)observeValueForKeyPath:(NSString *)keyPath
                      ofObject:(id)object
                        change:(NSDictionary *)change
                       context:(void *)context
    {
        if ([keyPath isEqual:@"services"]) {

            NSSet *newServices = (NSSet*)[change objectForKey:@"new"];

            if(newServices){

                MYBonjourService *service;
                for (service in newServices){
                    textView.text  = [NSString stringWithFormat:@"%@\nNew user: %@ (%@)", textView.text, service.name, [service txtRecord]];

                }
            }
    }

И я получаю нулевое значение для txtRecord.

1 Ответ

0 голосов
/ 03 декабря 2011

Хорошо, получил ответ.

Проблема заключалась в том, что вновь обнаруженная служба еще не была решена, следовательно, не было данных.

Сначала пришлось разрешить службу.

-(void)resolveService:(MYBonjourService*)service{

    service.addressLookup.continuous = YES;
    [service.addressLookup addObserver: self
                            forKeyPath: @"addresses"
                               options: NSKeyValueObservingOptionOld | NSKeyValueObservingOptionNew
                               context: NULL];
    [service queryForRecord: kDNSServiceType_NULL];
}
...