ฉันพบปัญหาบางอย่างกับ Java socket API ฉันกำลังพยายามแสดงจำนวนผู้เล่นที่เชื่อมต่อกับเกมของฉันอยู่ ง่ายต่อการตรวจสอบว่าผู้เล่นเชื่อมต่อเมื่อใด อย่างไรก็ตามดูเหมือนว่าจะยากโดยไม่จำเป็นที่จะระบุว่าเมื่อใดที่ผู้เล่นตัดการเชื่อมต่อโดยใช้ socket API
การเรียกisConnected()
ซ็อกเก็ตที่ถูกตัดการเชื่อมต่อจากระยะไกลดูเหมือนจะกลับมาtrue
เสมอ ในทำนองเดียวกันเรียกบนซ็อกเก็ตที่ได้รับการปิดระยะไกลเสมอดูเหมือนว่าจะกลับมาisClosed()
false
ฉันได้อ่านแล้วเพื่อตรวจสอบว่าซ็อกเก็ตถูกปิดจริงหรือไม่ข้อมูลจะต้องถูกเขียนไปยังสตรีมเอาต์พุตและต้องมีข้อยกเว้น นี่ดูเหมือนเป็นวิธีที่ไม่สะอาดจริงๆในการจัดการกับสถานการณ์นี้ เราจะต้องส่งสแปมข้อความขยะผ่านเครือข่ายอย่างต่อเนื่องเพื่อที่จะได้รู้ว่าเมื่อซ็อกเก็ตปิดไปแล้ว
มีทางออกอื่นอีกไหม?