天天看點

關于用戶端斷開連接配接後伺服器抛出異常Connection reset

學習了socket  ,在做一個類似qq的c/s結構的聊天軟體。發現了一個問題

就是在用戶端與伺服器通信後,伺服器為用戶端開啟一個線程,使用while(true)循環時刻監聽是否有通信。

在界面開啟時沒有任何異常,可是當界面關閉 就一直抛出異常了。

開啟線程代碼如下:

異常内容如下:

java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:113)
at java.io.ObjectInputStream$PeekInputStream.read(ObjectInputStream.java:2266)
at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2279)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2750)
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:780)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:280)
at cn.edu.xynu.socket.ClientThread.run(ClientThread.java:22)      

仔細想想,或許在用戶端關閉後  socke是t斷開了,可是伺服器為用戶端已經開啟的線程還在執行。

是以要處理一下異常。

在為用戶端開啟的線程裡面定義一個布爾型變量,isOnline=true