Java プログラムメモ


トップ

ServerSocket の停止方法

処理中の ServerSocket を停止する場合は、halt() 内にて自分自身で Socket を生成して要求を送り、 ServerSocket に accept() させる。その後の流れは Thread の停止 と同じ。

ソース記述例

public class ServerSocketTest extends Thread { private int port_; private boolean halt_; public ServerSocketTest(int port) { port_ = port; start(); } public void run() { ServerSocket server = null; try { server = new ServerSocket(port_); while (!halt_) { Socket socket = server.accept(); // TODO 処理 } System.out.println("ServerSocketTest is halted."); } catch (InterruptedException e) { System.out.println("ServerSocketTest is halted."); } catch (Throwable t) { t.printStackTrace(); System.out.println("ServerSocketTest is dead."); } finally { if (server != null) { try { server.close(); } catch (IOException e) { } } } } public void halt() { halt_ = true; interrupt(); try { Socket socket = new Socket("127.0.0.1", port_); try { OutputStream stream = socket.getOutputStream(); String shutdown = "shudown command"; for (int i = 0; i < shutdown.length(); i++) { stream.write(shutdown.charAt(i)); } stream.flush(); stream.close(); } catch (Exception e) { } socket.close(); } catch (IOException e) { e.printStackTrace(System.out); System.exit(1); } } }

プログラムメモ アフリカ雑貨・珈琲豆・アールブリュット作品 マゴソスクール クラウドファンディング
SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送