[問題] socket自動斷開

看板java作者 (前面右轉)時間12年前 (2013/05/09 17:44), 編輯推噓0(006)
留言6則, 2人參與, 最新討論串1/1
先說說我程式的架構 有一個class MultiThreadedServer 它有個inner class叫 HandleClient implements Runnable 顧名思義就是讓外面的class去accept client的連結 再把它分配到inner class裡 ----------------以上前言---------------- 我的HandleClient長這樣 class HandleClient implements Runnable { private Socket skt; private String path; HandleClient(Socket ss){skt = ss;} public void run() { try{ while(true) { ... //recieve request to String msg if( msg.equals("sendPic") ) { recievePic(); } else if( msg.equals("sendPicMenu") ) { sendPicMenu(); } else if( msg.equals("login") ) { login(); } } } catch(Exception e) { System.out.println(e.toString()); } } private void recievePic(){...;} private void sendPicMenu(){...;} private void login(){...;} } Bug: 在最下面三個methods裡我都沒有寫到 skt.close(); login(); 沒有問題 但當我執行sendPicMenu();的時候 它做完這個method, socket會自動斷線 我有關掉的只有一個讀取檔案的 FileInputStream 還有一個傳輸的BufferedOutputStream 請問我應該要怎麼改才能讓他不斷線呢QQ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.235.115

05/09 17:53, , 1F
BufferedOutputStream close就跟著關啦
05/09 17:53, 1F

05/09 17:56, , 2F
為什麼~~~
05/09 17:56, 2F

05/09 18:00, , 3F
你不需要close也不需要BufferedOutputStream
05/09 18:00, 3F

05/09 18:01, , 4F
自己寫copy自己開buffer才是比較好的做法...
05/09 18:01, 4F

05/09 18:02, , 5F
不然就是改call flush()或是用IOUtils.copy
05/09 18:02, 5F

05/09 20:30, , 6F
好喔謝謝^_^
05/09 20:30, 6F
文章代碼(AID): #1HYt0Mi- (java)