Sto lavorando con un'applicazione commerciale che sta generando una SocketException con il messaggio,
Una connessione esistente è stata forzatamente chiusa dall'host remoto
Ciò accade con una connessione socket tra client e server. La connessione è viva e vegeta e un sacco di dati viene trasferito, ma poi viene disconnesso dal nulla.
Qualcuno l'ha mai visto prima? Quali potrebbero essere le cause? Posso indovinare alcune cause, ma c'è anche un modo per aggiungere altro in questo codice per capire quale potrebbe essere la causa?
Eventuali commenti / idee sono benvenuti.
... L'ultimo ...
Ho delle registrazioni da alcune tracce di .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
Sulla base di altre parti della registrazione ho visto che dice "0 # 0" significa che viene inviato un pacchetto di 0 byte di lunghezza. Ma cosa significa veramente?
Si sta verificando una delle due possibilità e non sono sicuro di quale,
1) La connessione viene chiusa, ma i dati vengono quindi scritti nel socket, creando così l'eccezione sopra. Lo 0 # 0 significa semplicemente che non è stato inviato nulla perché il socket era già chiuso.
2) La connessione è ancora aperta e viene inviato un pacchetto di zero byte (ovvero il codice ha un bug) e lo 0 # 0 significa che un pacchetto di zero byte sta tentando di essere inviato.
Cosa ne pensi? Potrebbe essere inconcludente, immagino, ma forse qualcun altro ha visto questo genere di cose?