실행중인 Bonjour 지원 서비스를 모두 나열 할 수 있습니까?


21

내 컴퓨터에서 Bonjour를 사용하여 어떤 프로그램을 광고하는지 알고 싶습니다. 그렇게 할 방법이 있습니까?

답변:


36

dns-sd명령 줄 도구이 도움이 될,하지만 그것을 사용하는 배우는 것은 조금 까다 롭습니다 수 있습니다.

실행 dns-sd -B _services._dns-sd._udp하면 현재 광고중인 사용 가능한 모든 서비스 유형 목록이 표시됩니다. (목록은 인터페이스마다 다르므로 일부 중복성이 있습니다.) 네트워크 연결이 활성화되지 않은 Mac에서이 작업을 수행하면 해당 시스템에서 실행중인 서비스 만 목록에 포함됩니다.

이 목록을 사용하면 dns-sd -B _home-sharing._tcp(iTunes 홈 공유 인스턴스를 나열 하는) 등을 실행하여 개별 서비스 유형에 대한 정보를 요청할 수 있으며 , 인스턴스 이름이 주어지면 dns-sd -L "Wes Campaigne’s Library" _home-sharing._tcp특정 인스턴스에 대한 정보를 조회 할 수 있습니다 .

솔직히 말해서,이 전체 프로세스는 다소 지루하며 검색 (이전 Bonjour Browser)이 수행 한 것과 똑같 으므로 사용하는 것이 좋습니다. 그러나 어떤 방법을 사용하든 주어진 서비스 항목에 어떤 프로그램이 책임이 있는지 항상 명확하지는 않습니다.

binarybob의 답변 에 제공된 전략을 사용하여 포트 번호를 기반으로 서비스 항목을 실행중인 프로세스에 매핑하려고 시도 할 수 있지만 항상 작동하지는 않습니다. 또 다른 전략은 dns-sd -B _home-sharing._tcp인스턴스가 추가되거나 제거 될 때 열린 상태로 유지되고보고 된 다음 하나씩 실행하고 다양한 앱을 종료하고 (시스템 서비스가 아니라고 가정) 종료 메시지가 어떤 메시지를 트리거하는지 확인하는 것입니다.


음악 공유 서비스가 이제 호출 된 _daap것 같습니다.
zneak

실제로 DAAP는 iTunes의 두 가지 별도 형식의 보관함 공유 중 더 오래된 것을 말합니다. DAAP는 기본 설정> 공유> 로컬 네트워크에서 내 라이브러리 공유를 통해 활성화됩니다. iTunes 9에 추가 된 홈 공유는 파일> 홈 공유를 통해 활성화됩니다. 인증을 위해 Apple ID를 사용합니다.
Wes Campaigne

5

정확한 기준을 충족하지는 않지만 Tildesoft의 Bonjour Browser 는 로컬 네트워크에 광고 된 모든 Bonjour 서비스와이를 광고하는 호스트를 모두 나열 할 수 있습니다.

로컬 광고 서비스의 경우 Bonjour Browser에서 드릴 다운하여 서비스가 광고되는 포트 번호를 찾은 다음 서비스 lsof와 관련된 응용 프로그램을 결정하는 데 사용할 수 있습니다. 예를 들면 다음과 같습니다.

lsof -i | grep 57857

준다

iTunes    36720   ...     TCP *:57857 (LISTEN)

iTunes가 실행 중일 때


2

레거시 아티클로 분류되었지만 DNSServiceMetaQuery 와 같은 것이 좋습니다. 설명서에 요약 된대로 :

이 샘플은 DNSServiceQueryRecord를 사용하여 로컬 네트워크에서 보급되는 Bonjour 서비스 유형 목록을 반환하는 멀티 캐스트 DNS 쿼리를 보냅니다. 이 쿼리에 응답하려면 컴퓨터에서 mDNSResponder-58.6 (Mac OS X 10.3.4) 이상을 실행해야합니다.

Mountain Lion에서 DNSServiceMetaQuery를 실행하려면 (포함 된 빌드가 제대로 실행되지 않음) 샘플 코드 링크 로 이동하여 샘플 코드 다운로드를 클릭하십시오. 그런 다음 Xcode를 아직 설치 하지 않았다면 설치하십시오 . Mac OS X> 응용 프로그램> 명령 줄 도구 템플릿 아래에 새 프로젝트를 생성하십시오 .

모든 텍스트를 열고 복사 하여 새 명령 줄 도구 프로젝트에 ~/Downloads/DNSServiceMetaQuery/DNSServiceMetaQuery.c붙여 넣습니다 main.c(템플릿에 있던 모든 내용을 대체 함). 다음으로, 사이드 바에서 빌드 이름> 빌드 단계에서 프로젝트 이름을 클릭하고 바이너리를 라이브러리와 링크 옆의 드롭 다운 화살표를 열어 CoreFoundation.framework를 프로젝트에 추가해야합니다 . +버튼을 클릭하고 CoreFoundation.framework를 검색하여 추가하십시오. 그런 다음 실행 단추 (재생 단추 모양)를 클릭하고 빌드 성공 이미지를 기다립니다. 로그가있는 창의 버튼에서 무언가가 나옵니다. 모든 Bonjour 서비스가 표시됩니다. 모든 출력이 선택되어 있는지 확인하십시오.


나는 유능한 프로그래머이므로 Xcode를 둘러싼 길을 알고 있습니다 (그리고 Xcode를 설치하고 싶지는 않기 때문에 좋은 일입니다). 감사합니다!
zneak

Apple은 코드를 제거했지만 미러 에서 사용할 수 있습니다 .
Mr. Tao

@ Mr.Tao 코드는 여전히 Apple 사이트에 존재합니다. 답변의 링크를 업데이트했습니다
Jay O'Conor
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.