คำตอบสั้น ๆ ไม่ใช่และไม่ง่าย
บน Linux นั้นใช้/proc/net/unix
เพื่อดึงข้อมูลเกี่ยวกับซ็อกเก็ตโดเมน UNIX อินเตอร์เฟสนี้แสดงรายการซ็อกเก็ตที่ถูกผูกไว้ทั้งหมด แต่ไม่ได้ติดตามจุดสิ้นสุด ดังนั้นคุณสามารถดูว่ามีซ็อกเก็ตใดอยู่บ้าง แต่คุณไม่สามารถเห็นสิ่งที่เชื่อมต่อกับซ็อกเก็ตได้ บางแห่งข้อมูลนี้ถูกติดตามจะต้องถูกติดตามมิฉะนั้นการเชื่อมต่อซ็อกเก็ตจะไม่ทำงาน ฉันยังไม่พบกลไกใด ๆ ในการดึงข้อมูลการเชื่อมต่อ
คำถามการดมกลิ่นน่าสนใจกว่าเล็กน้อย แต่ก็ไม่ทำให้ผิดหวัง สิ่งที่ฉันหมายถึงโดย "ไม่ง่าย" คือไม่มีเบ็ดใด ๆ ที่จะแอบเข้าไปและรับข้อมูลนั้น อะนาล็อกที่ใกล้เคียงที่สุดคือการใช้ tcpdump หรือ Wireshark ซึ่งทั้งสองอย่างใช้ libpcap เพื่อทำการยกของหนัก ในขณะที่เครือข่าย (AF_INET) และโดเมน UNIX (AF_UNIX) ถูกสร้างขึ้นโดยใช้การsocket()
เรียกใช้ฟังก์ชั่นทั้งใช้connect()
ในการเชื่อมต่อใช้งานread()
และwrite()
ประมวลผลข้อมูลพวกเขาถูกจัดการโดยระบบย่อยเคอร์เนลที่แตกต่างกัน สิ่งนี้มีผลข้างเคียงที่โชคร้ายที่ libpcap ไม่ได้ออกแบบมาเพื่อทำงานกับซ็อกเก็ตโดเมน UNIX
มีปัญหาสลัวน้อยกว่าเล็กน้อย recv(2)
ลองดูที่หน้าคนสำหรับ นี่คือการเรียกระบบระดับต่ำกว่าที่read()
ใช้ มีธงที่มีอยู่สำหรับเรียกว่าrecv()
MSG_PEEK
สิ่งนี้จะช่วยให้คุณดมกลิ่นการรับส่งข้อมูลผ่านซ็อกเก็ตโดเมน UNIX นั่นคือด้านสว่างด้านมืดคือที่สุดของความรู้ของฉันไม่มีแอปพลิเคชันปัจจุบันที่ออกแบบมาเพื่อทำสิ่งนี้ ดังนั้นคุณกำลังดูความพยายามในการพัฒนา
ผมต้องการมีเป็นคำตอบที่ดีที่เรียบง่ายของ F'YEAH ทั้งชิ้นส่วนของคำถามของคุณ