ฉันสามารถแสดงรายการบริการที่เปิดใช้งาน 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เพื่อค้นหาข้อมูล

จริงๆแล้วกระบวนการทั้งหมดนี้ค่อนข้างน่าเบื่อและเป็นสิ่งที่Discovery (เดิมคือ Bonjour Browser) ถูกสร้างขึ้นมาเพื่อทำดังนั้นฉันขอแนะนำให้ใช้สิ่งนั้น ไม่ว่าคุณจะทำวิธีใดก็ตามอาจไม่ชัดเจนว่าโปรแกรมใดรับผิดชอบต่อการรับบริการ

คุณสามารถใช้กลยุทธ์ที่กำหนดไว้ในคำตอบของ binarybobเพื่อพยายามแมปรายการบริการกับกระบวนการที่ทำงานอยู่ตามหมายเลขพอร์ต แต่อาจไม่ได้ผลเสมอไป กลยุทธ์อื่นคือการเรียกใช้สิ่งdns-sd -B _home-sharing._tcpที่ยังคงเปิดอยู่และรายงานเมื่อมีการเพิ่มหรือลบอินสแตนซ์หนึ่งต่อหนึ่งออกจากแอปต่างๆและ (สมมติว่าไม่ใช่บริการของระบบ) ดูว่าการเลิกใช้ข้อความใดเป็นสาเหตุของข้อความ


ดูเหมือนบริการแบ่งปันเพลงเรียกว่าตอนนี้_daapแม้ว่า
zneak

จริงๆแล้ว DAAP หมายถึงการแชร์ไลบรารีสองรูปแบบที่เก่ากว่าของ iTunes เปิดใช้งาน DAAP ผ่านการตั้งค่า> การแชร์> แบ่งปันห้องสมุดของฉันในเครือข่ายท้องถิ่นของฉัน Home Sharing ซึ่งเพิ่มใน iTunes 9 เปิดใช้งานผ่านไฟล์> Home Sharing ใช้ Apple ID ของคุณสำหรับการตรวจสอบสิทธิ์
Wes Campaigne

5

แม้ว่ามันอาจจะไม่เป็นไปตามเกณฑ์ที่แน่นอนของคุณ แต่Bonjour Browserของ Tildesoft สามารถแสดงรายการบริการ bonjour ทั้งหมดที่โฆษณาในเครือข่ายท้องถิ่นของคุณและโฮสต์ที่กำลังโฆษณาอยู่

ฉันเดาว่าสำหรับบริการโฆษณาในพื้นที่ที่คุณสามารถเจาะลึกลงใน Bonjour Browser เพื่อค้นหาหมายเลขพอร์ตที่ให้บริการโฆษณาแล้วใช้lsofเพื่อกำหนดแอปพลิเคชันที่เกี่ยวข้องตัวอย่างเช่น:

lsof -i | grep 57857

จะช่วยให้

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

เมื่อฉันใช้งาน iTunes


2

แม้ว่าจะถูกจัดประเภทเป็นบทความดั้งเดิม แต่สิ่งนี้อาจเป็นสิ่งที่คุณกำลังมองหา: DNSServiceMetaQuery ตามที่ระบุไว้ในเอกสาร:

ตัวอย่างนี้ใช้ DNSServiceQueryRecord เพื่อส่งแบบสอบถาม Multicast DNS ที่ส่งคืนรายการประเภทบริการ Bonjour ที่โฆษณาในเครือข่ายท้องถิ่น เครื่องต้องใช้งาน mDNSResponder-58.6 (Mac OS X 10.3.4) หรือใหม่กว่าเพื่อตอบแบบสอบถามนี้

หากต้องการเรียกใช้ DNSServiceMetaQuery บน Mountain Lion (บิลด์ที่รวมมาทำงานไม่ถูกต้อง) ให้ไปที่ลิงค์โค้ดตัวอย่างและคลิกดาวน์โหลดโค้ดตัวอย่าง จากนั้นติดตั้ง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.