เราสร้างการเชื่อมต่อ 2 รายการระหว่างเซิร์ฟเวอร์ Java และไคลเอนต์ C++ การเรียกวัตถุ Java ServerSocket ยอมรับ () สองครั้งและแต่ละส่งคืน 1 ซ็อกเก็ต การเรียกไคลเอ็นต์ C ++ เชื่อมต่อ () สองครั้ง เราถือว่าพอร์ตของซ็อกเก็ตที่ 1 ที่ส่งคืนโดยยอมรับ () ควรเหมือนกับพอร์ตของซ็อกเก็ตไคลเอนต์แรกที่เรียกเชื่อมต่อ () และเหมือนกันสำหรับซ็อกเก็ตคู่ที่ 2
แต่จากการตรวจสอบหมายเลขพอร์ตในแต่ละซ็อกเก็ต ฉันได้เห็นกรณีที่ผิดปกติเป็นครั้งคราว โดยที่ซ็อกเก็ตที่ 1 จาก Accept() เชื่อมต่อกับซ็อกเก็ตไคลเอนต์ที่ 2 ที่เรียกเชื่อมต่อ () และซ็อกเก็ตที่ 2 จาก Accept() เชื่อมต่อกับซ็อกเก็ตไคลเอนต์ที่ 1 .
ทั้งเซิร์ฟเวอร์และไคลเอนต์เป็นแบบเธรดเดียวที่นี่เพื่อสร้างการเชื่อมต่อ ลำดับจะย้อนกลับได้อย่างไร?