看板 java 關於我們 聯絡資訊
先說說我程式的架構 有一個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
popcorny:BufferedOutputStream close就跟著關啦 05/09 17:53
heyguys123:為什麼~~~ 05/09 17:56
popcorny:你不需要close也不需要BufferedOutputStream 05/09 18:00
popcorny:自己寫copy自己開buffer才是比較好的做法... 05/09 18:01
popcorny:不然就是改call flush()或是用IOUtils.copy 05/09 18:02
heyguys123:好喔謝謝^_^ 05/09 20:30