การโทรclose
และshutdown
มีผลกระทบที่แตกต่างกันสองแบบในซ็อกเก็ต
สิ่งแรกที่ต้องชี้ให้เห็นก็คือซ็อกเก็ตเป็นทรัพยากรในระบบปฏิบัติการพื้นฐานและกระบวนการต่างๆสามารถมีจุดจับสำหรับซ็อกเก็ตพื้นฐานเดียวกันได้
เมื่อคุณเรียกclose
มันว่าการลดจำนวนแฮนเดิลลงทีละรายการและหากจำนวนแฮนเดิลถึงศูนย์ดังนั้นซ็อกเก็ตและการเชื่อมต่อที่เกี่ยวข้องจะดำเนินการตามขั้นตอนการปิดตามปกติ (ส่ง FIN / EOF ไปยังเพียร์อย่างมีประสิทธิภาพ) และซ็อกเก็ตจะถูกยกเลิกการจัดสรร
สิ่งที่ต้องใส่ใจในที่นี้ก็คือหากจำนวนที่จับไม่ถึงศูนย์เนื่องจากกระบวนการอื่นยังคงมีที่จับเข้ากับซ็อกเก็ตการเชื่อมต่อจะไม่ปิดและซ็อกเก็ตจะไม่ถูกจัดสรร
ในทางกลับกันการเรียกร้องshutdown
ให้อ่านและเขียนจะปิดการเชื่อมต่อพื้นฐานและส่ง FIN / EOF ไปยังเพียร์โดยไม่คำนึงถึงจำนวนกระบวนการที่จัดการกับซ็อกเก็ต อย่างไรก็ตามจะไม่ยกเลิกการจัดสรรซ็อกเก็ตและคุณยังต้องโทรปิดในภายหลัง
shutdown()
ทำอะไร:)