1) ความแตกต่างระหว่างการเชื่อมต่อและการหมดเวลาอ่านสำหรับซ็อกเก็ตคืออะไร
การหมดเวลาการเชื่อมต่อคือการหมดเวลาในการเชื่อมต่อเริ่มต้น เช่นเสร็จสิ้นการจับมือการเชื่อมต่อ TCP หมดเวลาการอ่านคือการหมดเวลาในการรอคอยที่จะอ่านข้อมูลที่1 หากเซิร์ฟเวอร์ไม่สามารถส่งไบต์ <timeout> วินาทีหลังจากไบต์สุดท้ายข้อผิดพลาดการหมดเวลาการอ่านจะถูกเพิ่ม
2) การหมดเวลาเชื่อมต่อตั้งค่าเป็น "infinity" หมายความว่าอย่างไร ในสถานการณ์ใดบ้างที่มันจะยังคงอยู่ในวง infinitive? และอะไรที่สามารถกระตุ้นให้วงอินฟินิตี้ตาย?
หมายความว่าความพยายามในการเชื่อมต่อสามารถบล็อกได้ตลอดเวลา ไม่มีการวนซ้ำไม่สิ้นสุด แต่ความพยายามเชื่อมต่อสามารถยกเลิกการบล็อกโดยเธรดอื่นที่ปิดซ็อกเก็ต (การThread.interrupt()
โทรอาจทำตามเคล็ดลับ ... ไม่แน่ใจด้วย)
3) การหมดเวลาการอ่านถูกตั้งค่าเป็น "infinity" หมายถึงอะไร ในสถานการณ์ใดที่มันจะสามารถอยู่ในวงวนไม่สิ้นสุดได้? สิ่งที่ทำให้เกิดการวนซ้ำไม่สิ้นสุด
หมายความว่าการเรียกไปread
ยังซ็อกเก็ตสตรีมอาจบล็อกตลอดไป อีกครั้งไม่มีลูปไม่มีที่สิ้นสุด แต่read
สามารถยกเลิกการปิดกั้นโดยการThread.interrupt()
โทรปิดซ็อกเก็ตและ (แน่นอน) ปลายอีกด้านหนึ่งส่งข้อมูลหรือปิดการเชื่อมต่อ
1 - ไม่ใช่ ... อย่างที่ผู้วิจารณ์คนหนึ่งคิดว่า ... การหมดเวลาของซ็อกเก็ตที่สามารถเปิดได้หรือไม่ได้ใช้งาน
HttpURLConnection.getResponseCode()
ถูกแขวนสำหรับ apprx หนึ่งสัปดาห์จนกว่าเราจะเริ่มกระบวนการใหม่ เห็นได้ชัดว่าไม่มีการตั้งค่าการหมดเวลาในด้าน JVM และไม่มีการหมดเวลาในด้าน Linux OS