ฉันกำลังทำงานกับแอพพลิเคชั่นทางการค้าที่ใช้ SocketException พร้อมข้อความ
การเชื่อมต่อที่มีอยู่ถูกบังคับให้ปิดโดยโฮสต์ระยะไกล
สิ่งนี้เกิดขึ้นกับการเชื่อมต่อซ็อกเก็ตระหว่างไคลเอนต์และเซิร์ฟเวอร์ การเชื่อมต่อยังมีชีวิตอยู่และดีและมีการถ่ายโอนข้อมูลจำนวนมาก แต่ก็จะถูกตัดการเชื่อมต่อออกจากที่ใดที่หนึ่ง
มีใครเห็นสิ่งนี้มาก่อนหรือไม่ สาเหตุอาจเกิดจากอะไร ฉันสามารถเดาสาเหตุบางอย่างได้ แต่ก็มีวิธีเพิ่มรหัสนี้ลงไปอีกไหมเพื่อหาสาเหตุที่เป็นไปได้
ความคิดเห็น / ความคิดใด ๆ ยินดีต้อนรับ
... ใหม่ล่าสุด ...
ฉันมีการบันทึกจากการติดตาม. NET บางรายการ
System.Net.Sockets Verbose: 0 : [8188] Socket#30180123::Send() DateTime=2010-04-07T20:49:48.6317500Z
System.Net.Sockets Error: 0 : [8188] Exception in the Socket#30180123::Send - An existing connection was forcibly closed by the remote host DateTime=2010-04-07T20:49:48.6317500Z
System.Net.Sockets Verbose: 0 : [8188] Exiting Socket#30180123::Send() -> 0#0
จากส่วนอื่น ๆ ของการบันทึกฉันได้เห็นความจริงที่ระบุว่า '0 # 0' หมายถึงการส่งแพ็กเก็ตที่มีความยาว 0 ไบต์ แต่นั่นหมายความว่าอย่างไร
ความเป็นไปได้อย่างหนึ่งอย่างใดอย่างหนึ่งเกิดขึ้นและฉันไม่แน่ใจ
1) การเชื่อมต่อถูกปิด แต่ข้อมูลถูกเขียนลงในซ็อกเก็ตดังนั้นการสร้างข้อยกเว้นข้างต้น 0 # 0 นั้นหมายความว่าไม่มีสิ่งใดถูกส่งเนื่องจากซ็อกเก็ตปิดอยู่แล้ว
2) การเชื่อมต่อยังคงเปิดอยู่และแพ็คเก็ตของศูนย์ไบต์จะถูกส่ง (เช่นรหัสมีข้อผิดพลาด) และ 0 # 0 หมายความว่าแพ็คเก็ตของศูนย์ไบต์พยายามที่จะส่ง
คุณคิดยังไง มันอาจจะสรุปไม่ได้ว่าฉันเดา แต่บางทีคนอื่นเห็นสิ่งนี้?