Java(J2SE)でソケット通信するプログラムを復習しておこうと思い立ったので、メモしておく。
まずは、サーバー側のプログラムである。
TcpServerLesson.java
public class TcpServerLesson { static final int PORT = 10000; /** * @param args */ public static void main(String[] args) { ServerSocket serverSocket = null; try { serverSocket = new ServerSocket(PORT); boolean runFlag = true; while(runFlag){ System.out.println("start wait..."); // 接続があるまでブロック Socket socket = serverSocket.accept(); BufferedReader br = new BufferedReader( new InputStreamReader(socket.getInputStream())); String str; while( (str = br.readLine()) != null ){ System.out.println(str); // exitという文字列を受け取ったら終了する if( "exit".equals(str)){ runFlag = false; } } if( socket != null){ socket.close(); socket = null; } } } catch (IOException e) { e.printStackTrace(); } if( serverSocket != null){ try { serverSocket.close(); serverSocket = null; } catch (IOException e) { e.printStackTrace(); } } } }
このプログラムを実行すると
「start wait…」と表示され、ポート10000でクライアントから接続があるまで待機する。
次に、クライアント側のプログラムは以下のようになる。
ClientLesson.java
public class ClientLesson { static final String HOST = "127.0.0.1"; static final int PORT = 10000; /** * @param args */ public static void main(String[] args) { Socket socket = null; try { socket = new Socket(HOST,PORT); PrintWriter pw = new PrintWriter(socket.getOutputStream(),true); pw.println("Hello world"); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } if( socket != null){ try { socket.close(); socket = null; } catch (IOException e) { e.printStackTrace(); } } } }
サーバーのプログラムが待機状態ならば、クライアントのプログラムを実行するとサーバー側に文字列が渡るだろう。
サーバー側のコンソールに
「Hello world」と表示される。
※この例では、サーバーは”exit”という文字列を受け取らないと停止しない。
ピンバック: 【Android】AndroidでSocket通信をする(クライアント編) – ザワプロ!