1

我有解决问题NSNetService。找到该服务NSNetService时,我已成功解决。NSNetServiceBrowser

-(void)netServiceBrowser:(NSNetServiceBrowser *)aNetServiceBrowser didFindService:(NSNetService *)aNetService moreComing:(BOOL)moreComing{

    if (![self.services containsObject:aNetService]) {

        [aNetService setDelegate:self];
        [aNetService resolveWithTimeout:5.0];
    }
}

那么这个方法就被成功调用了

-(void)netServiceDidResolveAddress:(NSNetService *)sender{

    NSArray *addresses = [ns addresses]; 
    NSDictionary* dict = [NSNetService dictionaryFromTXTRecordData:[sender TXTRecordData]];
    // Here both values are ok
}

但我想将 NSNetService 解析到服务器端以获取发布该服务的 IP 地址。

-(void)netServiceDidPublish:(NSNetService *)ns{

    [ns setDelegate:self];
    [ns resolveWithTimeout:5.0];
}

但这里这个方法没有调用。

-(void)netServiceDidResolveAddress:(NSNetService *)sender{
   
}

但是我这样做了

-(void)netServiceDidPublish:(NSNetService *)ns
{
    NSArray *addresses = [ns addresses]; // this gives null

    // this also gives null
    NSDictionary* dict = [NSNetService dictionaryFromTXTRecordData:[sender TXTRecordData]];
}

但价值观是null

如果可能,请帮助我。任何帮助将不胜感激。提前致谢。

4

1 回答 1

0

前几天也遇到了这个问题,我花了一段时间才弄清楚。出于某种原因,我需要将 aNetService 分配给属性。

# Declare a NSNetService property in the .h or further up .m file
@property (strong, nonatomic) NSNetService *currentService;

# In the .m file.
-(void)netServiceBrowser:(NSNetServiceBrowser *)aNetServiceBrowser didFindService:(NSNetService *)aNetService moreComing:(BOOL)moreComing{

    if (![self.services containsObject:aNetService]) {
        self.currentService = aNetService;
        [self.currentService setDelegate:self];
        [self.currentService resolveWithTimeout:5.0];
    }
}
于 2013-11-21T00:10:51.003 回答