0
ここではコードです:、正常に終了するかクラッシュするたびにプログラムがソケットを閉じるのを確認するにはどうすればよいですか?
public class MyConsoleIO implements Runnable {
SocketWorker o;
static BufferedReader reader;
public void assignObject(Object o) {
reader = new BufferedReader(new InputStreamReader(System.in));
this.o = (SocketWorker) o;
}
@Override
public void run() {
String inputString = null;
System.out.println("Press 'q' to kill to program");
try {
inputString = reader.readLine();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (inputString.equalsIgnoreCase("q")) {
this.applicationQuit();
}
}
public void applicationQuit(){
this.o.stopWorking();
System.exit(0);
}
}
public static void main(String[] args) {
SocketWorker worker = null;
MyIOConsole mio = null;
try {
portNumber = 2012;
worker = new SocketWorker();
worker.assignPort(portNumber);
mio = new MyIOConsole();
mio.assignObject(worker);
Thread b = new Thread(mio);
b.start();
worker.run();
} catch (IOException e) {
e.printStackTrace();
}finally{
mio.applicationQuit();
}
}
SocketWorkerは、ユーザコマンドを受け入れる、MyIOConsoleポート2012をリッスンし、単にソケットで、しかし、ソケットが例外を得たとき、私もそれらをキャッチして、コード
mio.applicationQuit();
を実行してください。私はそれを望んでいない、私はちょうどユーザーがアプリケーションを閉じたり、クラッシュしたときに、ソケットが閉じて終了したい。どうすれば解決できますか?
問題を明確にするためにSocketWorkerコードを追加してください – clevertension