作者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
1F:推 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)
2F:→ ken915007:我很久之前有写过~但是… 12/06 11:56
3F:推 snowlike:io均建立一次就可,按键後才对每个Handle.output作write 12/06 13:20
4F:→ snowlike:accept,read等会等待client,才会有这样的写法 12/06 13:24