ฉันสามารถค้นหาและฉันได้ดูรายการวิกิพีเดียและที่อื่น ๆ แล้ว แต่ถึงแม้ว่าฉันจะมีประสบการณ์การเขียนโปรแกรมบางอย่างฉันก็ไม่เข้าใจแนวคิดจริงๆ คุณสามารถปฏิบัติต่อฉันเหมือนอายุ 10 ปีและให้คำอธิบายที่ชัดเจนเกี่ยวกับการสื่อสารซ็อกเก็ตได้หรือไม่?
ฉันสามารถค้นหาและฉันได้ดูรายการวิกิพีเดียและที่อื่น ๆ แล้ว แต่ถึงแม้ว่าฉันจะมีประสบการณ์การเขียนโปรแกรมบางอย่างฉันก็ไม่เข้าใจแนวคิดจริงๆ คุณสามารถปฏิบัติต่อฉันเหมือนอายุ 10 ปีและให้คำอธิบายที่ชัดเจนเกี่ยวกับการสื่อสารซ็อกเก็ตได้หรือไม่?
คำตอบ:
ให้ฉันยกตัวอย่าง: สมมติว่าคุณต้องการสื่อสาร / แชทกับเพื่อนของคุณที่ไม่ได้อยู่ที่คุณอยู่ เพื่อที่จะเกิดขึ้นคุณต้องสร้าง "ช่องทางการสื่อสาร" สมมติว่าคุณต้องการสื่อสารด้วยโทรศัพท์ คุณรู้ว่ามีเครือข่ายสายโทรศัพท์ในเมืองที่ขยายไปทุกบ้าน
ตอนนี้มีซ็อกเก็ตโทรศัพท์ในบ้านของคุณและอีกอันอยู่ในบ้านเพื่อนของคุณ เพื่อให้การสื่อสารเกิดขึ้นคุณและเพื่อนของคุณต้องเชื่อมต่อกับเครือข่ายโดยเสียบโทรศัพท์ของคุณเข้ากับช่องเสียบที่ปลายทั้งสองด้านของการสื่อสาร ซ็อกเก็ตในการเขียนโปรแกรมจะเหมือนกันในแนวความคิดเป็นซ็อกเก็ตโทรศัพท์
ในการเขียนโปรแกรมคุณมีสองกระบวนการ (ใช้งานโปรแกรม) ที่ต้องการสื่อสารซึ่งกันและกัน เพื่อที่พวกเขาจะต้องสร้างการเชื่อมโยงการสื่อสารระหว่างพวกเขา อีกครั้งมีเครือข่ายที่มีอยู่พวกเขาเพียงแค่ต้องเชื่อมต่อกับเครือข่ายนี้โดยใช้ซ็อกเก็ตบางประเภท ซ็อกเก็ต Unix เป็นหนึ่งซ็อกเก็ตดังกล่าวที่ให้การเชื่อมต่อนี้ / pluggability ไปยังเครือข่าย ดังนั้นในแต่ละโปรแกรมทั้งสองคุณจะมีรหัสบางส่วนที่ทำหน้าที่เชื่อมต่อกับเครือข่ายผ่านซ็อกเก็ต
ส่วนที่เหลือเป็นรายละเอียด
ซ็อกเก็ต Unix เป็นซ็อกเก็ตสองทิศทางเช่นเดียวกับซ็อกเก็ตที่ใช้ IP ซึ่งคุณอาจคุ้นเคยกับและชนิดที่คล้ายกับไพพ์ซึ่งคุณอาจคุ้นเคย
พวกเขามีชุดเล็ก ๆ ของคุณสมบัติที่น่าสนใจ:
โดยพื้นฐานแล้วพวกเขาจะเทียบเท่ากับซ็อกเก็ตอื่น ๆ - พวกเขามีคุณสมบัติที่น่าสนใจกว่าท่อเล็กน้อย แต่ไม่แตกต่างกันอย่างสิ้นเชิง โดยทั่วไปแล้วพวกเขาจะมีเวลาแฝง IPC สูงกว่าแบบไปป์และบัฟเฟอร์ขนาดใหญ่กว่า - แม้ว่าคุณจะสามารถปรับแต่งมันได้และมันก็ขึ้นอยู่กับแพลตฟอร์ม
คุณสมบัติที่น่าสนใจขั้นสุดท้ายที่ต้องจำคือพวกเขาใช้ระบบไฟล์เป็น namespace ของพวกเขา - ดังนั้นจึงเป็นเหมือนไพพ์ที่มีชื่อแทนที่จะเป็นไพพ์นิรนามในซอฟต์แวร์ที่ไม่มีความสัมพันธ์ก่อนหน้านี้สามารถสื่อสารได้ (ซ็อกเก็ต namespace บทคัดย่อเหมือนกัน แต่เส้นทาง "ไฟล์" ไม่จำเป็นต้องมีอยู่)
ไม่มีอะไรที่ลึกกว่านั้น - พวกเขาไม่มีคุณสมบัติซ่อนเร้นลับที่ทำให้พวกเขาแตกต่างอย่างสิ้นเชิงจากไพพ์ทั่วไปหรือการเชื่อมต่อ TCP ไปยังโลคอลโฮสต์
การเขียนโปรแกรมซ็อกเก็ต Linux ตอนที่ 1: การใช้ TCP / IPทำงานได้ค่อนข้างดีสำหรับฉัน มันเริ่มต้นด้วยการแนะนำเครือข่าย IP และเลเยอร์เครือข่ายจากนั้นดำเนินการต่อโดยการแสดงวิธีการใช้เซิร์ฟเวอร์ echo และไคลเอนต์อย่างง่ายทั้งใน C และ Python