これはプログラムのクライアント部分です。ソケットで動作し、サーバーに読み書きするメソッドを持つクラスがあります。サーバーからのメッセージをキャッチするイベントを作成するにはどうすればよいですか? inputStream にメッセージがある場合にのみアクションを実行する actionListener があります。Running.receiveLine(); を呼び出すタイマーを試しました。しかし、それは非常に悪いです。while(true) での解決策も良くないようです。
public class Running extends Thread{
private Socket s;
private PrintStream ps;
private BufferedReader br;
public Running(){
try{
s = new Socket(InetAddress.getLocalHost(), 8072);
ps = new PrintStream(s.getOutputStream());
br = new BufferedReader(new InputStreamReader(s.getInputStream()));
} catch (UnknownHostException ex) {
System.out.println("11");
ex.printStackTrace();
} catch (IOException ex) {
System.out.println("00");
ex.printStackTrace();
}
}
public String receiveLine(){
String ret = "";
try {
ret = br.readLine();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return ret;
}
public void sendLine(String s){
ps.println(s);
}
public void close(){
try {
s.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}