重複の可能性:
Java タイマーとソケットの問題
これがコードです。私がやりたいことは、時々送信するサーバーからメッセージを取得するための、サーバーとのクライアントループです。これはタイマーでの試みです。
private MessageFrame mf;
private User us;
private Contact cn;
private Socket s;
private PrintStream ps;
private BufferedReader br;
private Timer timer ;
public MessageFrameListener(MessageFrame m_f, User u_s, Contact c_n){
timer = new Timer(500,new timerListener());
mf = m_f;
us = u_s;
cn = c_n;
m_f.addButtonListener(new SButtonListener());
m_f.addWinListener(new FrameListener());
}
public void init(){
try {
s = new Socket(InetAddress.getLocalHost(), 8072);
ps = new PrintStream(s.getOutputStream());
br = new BufferedReader( new InputStreamReader(s.getInputStream()));
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
timer.start();
}
public class timerListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
//String insert = mf.getInput();
String result;
try {
//проверить, что буфер не пуст
if((result = br.readLine()) != null){
String[] results = result.split(" ");
if("m".equals(results[0])){
if("-1".equals(results[2]))
mf.addLine2("Error");
else{
mf.addLine2(results[3]);
}
}
}
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
しかし、実行すると、プログラムは私のアクションに反応しなくなります。テキストを書くことも、ボタンを押すこともできません。