を停止していません:真サーバーは、私は(スタート/ストップ)サーバーの実行を制御するためのブール変数を持っている
プライベートブールecoute =;ここ
は私のクラスである:私は無限ループから抜け出す私のスレッドのためにfalseに変数を渡すために、ボタンをクリックしたときに
sw=new SwingWorker<String,Void>(){
protected String doInBackground() throws Exception {
try {
server = new ServerSocket(Integer.parseInt(port.getText()));
String str1="waiting for connexion..";
String str2="Connexion ok";
log.append(str1+"\n");
PrintWriter out=null;
BufferedReader in=null;
Socket socClient=null;
while(ecoute){
socClient = server.accept();
log.append(str2+"\n");
in = new BufferedReader(
new InputStreamReader(socClient.getInputStream())
);
out = new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(socClient.getOutputStream())),
true);
String str = in.readLine();
log.append(str+"\n");
}
in.close();
out.close();
socClient.close();
return "***End Reception***";
} catch (IOException ex) {
Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
return "***Error Reception***";
}
}
protected void done(){
String m="";
try {
m=get();
} catch (InterruptedException ex) {
Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
} catch (ExecutionException ex) {
Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
}
log.append(m+"\n");
}
};
sw.execute();
}
、何も起こりません:
private void arretReceptionActionPerformed(java.awt.event.ActionEvent evt) {
ecoute=false;
}
私はecoute=false;
を置き換えsw.calcel(true);
でも新しい...
どのような提案ですか?
接続が確立されるまで、 'socClient = server.accept();ブロックを呼び出しませんか?その場合、ブール値は最終的にブロックされない限り、決してチェックされません。 –