2012-11-11 3 views
1

저는 사용자 정의 코코아 (OSX) 서버와 클라이언트를 보유하고 있으며, 서버는 봉쥬르 서비스를 게시합니다. 클라이언트가 NSNetServiceBrowser을 사용하여 서버를 검색하도록했지만 어떤 결과도 얻지 못했습니다. 출력이 mdns -B _myservicetype._tcp이기 때문에 서비스가 게시 된 것을 알고 있습니다. 내 검색 및 게시 코드는 동일한 도메인, 이름 및 유형으로 검색하고 게시하며 Apple 샘플 코드와 거의 동일합니다. 검색 및 위임 방법NSNetServiceBrowser가 존재하지 않는 서비스를 찾지 못했습니다.

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]; 
} 

그것의 대부분은 단지 GUI 코드와 NSLogs이다, 아직 나는 GUI 변경이나 NSLog를 얻지 못했습니다. 누구든지 해결책이 있습니까?

답변

2

가능성은 고객의 몫입니다.

  1. 대리자 메서드에 중단 점을 설정합니다.
  2. sbrows이 범위를 벗어나지 않는지 확인하십시오. willSearch가 범위를 벗어나면 다른 응답이 없습니다.
+0

대단히 감사 드리며 범위가있는 미묘한 ARC 문제인 것으로 나타났습니다. +1하고 동의하십시오! – Linuxios

+0

그럼 어떻게 해결 했습니까? 나는 똑같은 문제를 겪고있다. –

관련 문제