作者nomeans (Walter)
看板java
標題[問題] server/multiple client 的問題
時間Sun Dec 6 00:44:54 2009
最近在寫一個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
推 now99:放個 Queue 兩個執行緒 一個處理近來的 一個GET Queue送出 12/06 01:00
※ 編輯: 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)
→ ken915007:我很久之前有寫過~但是… 12/06 11:56
推 snowlike:io均建立一次就可,按鍵後才對每個Handle.output作write 12/06 13:20
→ snowlike:accept,read等會等待client,才會有這樣的寫法 12/06 13:24