[問題] server/multiple client 的問題

看板java作者 (Walter)時間14年前 (2009/12/06 00:44), 編輯推噓2(202)
留言4則, 3人參與, 最新討論串1/3 (看更多)
最近在寫一個server與多個client 在server端輸入值然後傳給多個client 參考課本是要用multiple thread try{ //處理多個連線 ServerSocket serversocket = new ServerSocket(7000);//設一個port while(true){ Socket socket = serversocket.accept();//用一個while迴圈處理多個連線 Handle task = new Handle(socket);//將socket傳入Handle class // Thread thread = new Thread(task); // thread.start(); } }catch(IOException ex){ System.out.println(ex); } } private class ButtonListener implements ActionListener{ public void actionPerformed(ActionEvent e){ try{ double InputValue = Double.parseDouble(jtf.getText().trim()); jta.append("The value you passed is " + InputValue ); jta.append("\n"); Handle a = new Handle();//new 一個 Handle的物件 a.setValue(InputValue);//透過a將剛剛輸入的InputValue傳到Handle裡 }catch(Exception ex){ System.out.println(ex); } } } class Handle implements Runnable{ private Socket socket; double setInput; public Handle(Socket socket){ //接收從外部傳來的socket this.socket = socket; } public Handle(){ } public void setValue(double i){ this.setInput = i; } public void run(){ try{ while(true){ DataOutputStream output = new DataOutputStream(socket.getOutputStream()); output.writeDouble(this.setInput);//將從外部接收的setInput值傳給 } client顯示 }catch(Exception ex){ System.out.println(ex); } } } sorry~~ 我放上的code只是個server.java檔 不知道我的注解是否有讓程式比較清楚 非常抱歉 有將遇到的thread問題用//標示在上面的code 現在遇到的問題是thread的使用 不知道是該加在哪 如果加在處理多個連線那邊 發現無法會一直將預設的setInput一直傳過去client端 然後跑成無限迴圈QQ 如果加在Button那裏 又會一直出現java.lang.NullPointerException 有想到一個方法 就是等button按下傳入setValue 再start task的thread 可是要如何宣告這樣的thread呢? 還有這樣做可行嗎 麻煩各位了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.167.135.240

12/06 01:00, , 1F
放個 Queue 兩個執行緒 一個處理近來的 一個GET Queue送出
12/06 01:00, 1F
※ 編輯: nomeans 來自: 118.167.135.240 (12/06 01:08) ※ 編輯: nomeans 來自: 118.167.135.240 (12/06 01:21) ※ 編輯: nomeans 來自: 118.167.135.240 (12/06 01:22)

12/06 11:56, , 2F
我很久之前有寫過~但是…
12/06 11:56, 2F

12/06 13:20, , 3F
io均建立一次就可,按鍵後才對每個Handle.output作write
12/06 13:20, 3F

12/06 13:24, , 4F
accept,read等會等待client,才會有這樣的寫法
12/06 13:24, 4F
文章代碼(AID): #1B6eu86t (java)
文章代碼(AID): #1B6eu86t (java)