Objective c NSNetServiceBrowser找不到存在的服务
我有一个定制的Cocoa(OSX)服务器和客户端,服务器发布了一个bonjour服务。我让客户端使用Objective c NSNetServiceBrowser找不到存在的服务,objective-c,macos,bonjour,nsnetservicebrowser,Objective C,Macos,Bonjour,Nsnetservicebrowser,我有一个定制的Cocoa(OSX)服务器和客户端,服务器发布了一个bonjour服务。我让客户端使用NSNetServiceBrowser搜索服务器,但从未得到任何结果。我知道该服务已发布,因为它位于mdns-B\u myservicecype.\u tcp的输出中。我的搜索和发布代码使用相同的域名、名称和类型进行搜索和发布,与Apple示例代码几乎相同。以下是发布代码: service = [[NSNetService alloc] initWithDomain:@"" type:@"_sci
NSNetServiceBrowser
搜索服务器,但从未得到任何结果。我知道该服务已发布,因为它位于mdns-B\u myservicecype.\u tcp
的输出中。我的搜索和发布代码使用相同的域名、名称和类型进行搜索和发布,与Apple示例代码几乎相同。以下是发布代码:
service = [[NSNetService alloc] initWithDomain:@"" type:@"_scijs._tcp" name:@"ScienceJeopardyServer" port:4567];
[service publish];
以下是搜索和委派方法:
[sbrows setDelegate:self];
[sbrows searchForServicesOfType:@"_scijs._tcp" inDomain:@""];
-(void)netServiceBrowserWillSearch:(NSNetServiceBrowser *)aNetServiceBrowser {
[self.statusLabel setStringValue:@"Searching for server..."];
[self.serverIndicator setHidden:NO];
[self.serverIndicator startAnimation:self];
}
-(void)netServiceBrowser:aNetServiceBrowser didNotSearch:(NSDictionary *)errorDict {
[self.statusLabel setStringValue:@"Error finding server."];
[self.serverIndicator stopAnimation:self];
[self.serverIndicator setHidden:YES];
}
-(void)netServiceBrowserDidStopSearch:(NSNetServiceBrowser *)aNetServiceBrowser {
[self.serverIndicator stopAnimation:self];
[self.serverIndicator setHidden:YES];
}
-(void)netServiceBrowser:(NSNetServiceBrowser *)aNetServiceBrowser didFindService:(NSNetService *)aNetService moreComing:(BOOL)moreComing {
[aNetServiceBrowser stop];
NSLog(@"Found server.");
[self.statusLabel setStringValue:@"Resolving service..."];
[aNetService setDelegate:self];
[aNetService resolveWithTimeout:10.0];
}
以下是委托方法:
[sbrows setDelegate:self];
[sbrows searchForServicesOfType:@"_scijs._tcp" inDomain:@""];
-(void)netServiceBrowserWillSearch:(NSNetServiceBrowser *)aNetServiceBrowser {
[self.statusLabel setStringValue:@"Searching for server..."];
[self.serverIndicator setHidden:NO];
[self.serverIndicator startAnimation:self];
}
-(void)netServiceBrowser:aNetServiceBrowser didNotSearch:(NSDictionary *)errorDict {
[self.statusLabel setStringValue:@"Error finding server."];
[self.serverIndicator stopAnimation:self];
[self.serverIndicator setHidden:YES];
}
-(void)netServiceBrowserDidStopSearch:(NSNetServiceBrowser *)aNetServiceBrowser {
[self.serverIndicator stopAnimation:self];
[self.serverIndicator setHidden:YES];
}
-(void)netServiceBrowser:(NSNetServiceBrowser *)aNetServiceBrowser didFindService:(NSNetService *)aNetService moreComing:(BOOL)moreComing {
[aNetServiceBrowser stop];
NSLog(@"Found server.");
[self.statusLabel setStringValue:@"Resolving service..."];
[aNetService setDelegate:self];
[aNetService resolveWithTimeout:10.0];
}
大部分只是GUI代码和NSlog,但我从未得到GUI更改或NSlog。有人有解决方案吗?很可能是在您的客户中
sbrows
未超出范围。如果它不在范围内,将调用搜索,则不会调用其他响应非常感谢,这是一个涉及范围的微妙问题+1、接受!那你是怎么解决的?我也有同样的问题。