2013-11-21 50 views
0

我正在學習Java套接字,因此我試圖編寫兩個單獨的程序(服務器端和客戶端),並使用swing創建一個簡單的聊天程序。現在程序工作正常,我可以看到從客戶端服務器發送的文本,反之亦然。但是,問題是當我終止從服務器端的連接。用於聊天服務的Java Socket終端

我知道這兩個套接字並不一定相關,因爲如果連接在服務器端終止,客戶端不知道它,並持續在ObjectInput/OutputStreams拋出IOExceptions。

我的問題是,有沒有辦法通知客戶端有關終止連接的服務器,還是應該接受連接必須先從客戶端終止的事實?

+0

套接字關閉時,客戶端應收到-1。 – BevynQ

回答

0

如果你正在閱讀和對端關閉連接:

  1. read()方法將返回-1
  2. 的readLine()將返回null
  3. 的readObject()的readInt(),和所有其他的readXXX()方法都會拋出EOFException。
0

您可以在關閉連接之前發送特殊對象,讓客戶端知道服務器正在關閉連接。即使服務器在發送後立即關閉連接,也應該正確接收。