Bu yığın izleme snippet'i verildiğinde
Nedeni: java.net.SocketException: Yazılım, bağlantı iptaline neden oldu: java.net.SocketOutputStream.socketWrite0
adresinde yuva yazma hatası (Yerel Yöntem)
Aşağıdaki soruları cevaplamaya çalıştım:
- Bu istisnayı hangi kod atıyor? (JVM? / Tomcat? / Kodum?)
- Bu istisnanın atılmasına ne sebep olur?
# 1 ile ilgili:
Sun'ın JVM kaynağı tam olarak bu mesajı içermiyor, ancak Yazılımın bağlantıya neden olduğu metninin bağlantı iptaline neden olduğunu düşünüyorum : soket yazma hatası yerel uygulamadan SocketOutputStream
:
private native void socketWrite0(FileDescriptor fd, byte[] b, int off,
int len) throws IOException;
# 2 ile ilgili
Benim tahminim, istemci bağlantıyı sonlandırdığında, tam yanıtı almadan önce (örneğin bir istek gönderdi, ancak tam yanıtı almadan önce, kapatıldı / sonlandırıldı / çevrimdışı) neden olduğu.
Sorular:
- Yukarıdaki varsayımlar doğru mu (# 1 ve # 2)?
- Bu durumdan farklı olabilir mi: " sunucu tarafında bir ağ hatası nedeniyle istemciye yazılamadı "? yoksa aynı hata mesajını verir mi?
- Ve en önemlisi: Yukarıdakileri belirten resmi bir belge (örneğin Sun'dan) var mı?
Bu yığın izleme soket istemcisinin "hatası" olduğunu ve sunucunun önlemek için yapmış olabilir bir şey yok bir kanıt olması gerekir. (istisnayı yakalamak veya Sun olmayan bir JVM SocketOutputStream kullanmak dışında, her ikisi de istemcinin sonlandırıldığından gerçekten kaçınmaz)
outs.write(audioBytes);
) byte[]
için OutputStream
. Ses dolaşırken ve kullanıcı başka bir menüye tıklarsa (sunucu isteği gönderirse) konsolda aynı hatayı aldım. bu istisnayı görmezden gelmek güvenli midir?