2013-05-21 2 views
3

iOS에서 다른 장치를 찾기 위해 bonjour를 사용하므로 둘 사이에서 데이터를 스트리밍 할 수 있습니다. 나는 bonjour를 위해 NSNetService를, 스트리밍을 위해 CocoaAsyncSocket을 사용할 계획이었다.NSNetService와 GCDAsynSocket의 차이점은 무엇입니까?

socket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()]; 
[socket acceptOnPort:0 error:NULL]; 

netService = [[NSNetService alloc] initWithDomain:@"local." type:@"_YourServiceName._tcp." name:@"" port:socket.localPort]; 

사람이 NSNetServiceGCDAsyncSocket의 차이를 설명 할 수 없습니다 : this example에서

, 그들은 같은 포트에 GCDAsyncSocket과 NSNetService을 만들?

내게 같은 포트에 2 개의 소켓을 만드는 것처럼 보입니다. 특히 입력 & 출력 스트림을 NSNetService에서 만들 수 있기 때문에 특히 그렇습니다.

socket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()]; 
[socket acceptOnPort:0 error:NULL]; 

가 포트 번호를 0으로 설정되어있는 OS가 사용할 수있는 포트를 집어 것을 의미

[service getInputStream:&input outputStream:&output]; 

답변

3

GCDAsyncSocket는에게 청취 서버 소켓을 생성 에 사용된다.

은 소켓이 수신 대기중인 OS에서 선택한 포트 번호입니다.

NSNetService는 Bonjour를 통해 서비스을 게시 에 사용됩니다

netService = [[NSNetService alloc] initWithDomain:@"local." type:@"_YourServiceName._tcp." name:@"" port:socket.localPort]; 
[netService setDelegate:self]; 
[netService publish]; 

이 다른 소켓을 생성하지 않지만, 호스트 이름 및 서비스 이름과 함께 생성 된 포트 번호를 사용하고,이 게시 정보를 로컬 네트워크에 저장합니다 (Bonjour/mDNS 프로토콜 사용).

+0

NSNetService에서'getInputStream : getOutputStream :'을 설명해 주시겠습니까? 실제로 서비스를 게시하는 것 이상으로 실제로 소켓 연결을 만드는 것으로 보입니다. – bendytree

+0

@bendytree : 올바르게 문서를 이해하면 Bonjour를 통해 서버에 연결된 * 클라이언트 *가 문서를 사용하게됩니다. –

관련 문제