Tôi đang làm việc với một ứng dụng thương mại đang gửi một SocketException với thông báo,
Một kết nối hiện có đã bị đóng bởi máy chủ từ xa
Điều này xảy ra với một kết nối ổ cắm giữa máy khách và máy chủ. Kết nối vẫn còn sống và tốt, và hàng đống dữ liệu đang được truyền đi, nhưng sau đó nó bị ngắt kết nối.
Có ai nhìn thấy điều này trước đây? Nguyên nhân có thể là gì? Tôi có thể đoán một vài nguyên nhân, nhưng cũng có cách nào để thêm nhiều hơn vào mã này để tìm ra nguyên nhân có thể là gì không?
Bất kỳ ý kiến / ý tưởng đều được chào đón.
... Mới nhất ...
Tôi có một số đăng nhập từ một số dấu vết .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
Dựa trên các phần khác của việc ghi nhật ký, tôi đã thấy thực tế là nó nói '0 # 0' có nghĩa là một gói có độ dài 0 byte đang được gửi. Nhưng điều đó thực sự có ý nghĩa gì?
Một trong hai khả năng đang xảy ra, và tôi không chắc đó là gì
1) Kết nối đang được đóng, nhưng dữ liệu sau đó được ghi vào ổ cắm, do đó tạo ra ngoại lệ ở trên. 0 # 0 đơn giản có nghĩa là không có gì được gửi vì ổ cắm đã bị đóng.
2) Kết nối vẫn mở và một gói byte không được gửi (tức là mã có lỗi) và 0 # 0 có nghĩa là một gói byte không đang cố gắng được gửi.
Bạn nghĩ gì? Tôi đoán nó có thể không thuyết phục, nhưng có lẽ ai đó đã nhìn thấy loại điều này?