ネットワークプログラミング 2章 ソケット
- 2.1. ソケット
- 2.2. InetAddressクラス
- 2.3. SocketAddress/InetSocketAddressクラス
- 2.4. Socketクラス
- 2.5. TCPサーバプログラム
- 2.6. TCPクライアントプログラム
- 2.7. プログラムの実行
2.5. TCPサーバプログラム
それではソケットを利用したプログラムを作成してみましょう。ここではサンプルとして、クライアントから送信された文字列をそのまま送り返すサーバプログラムと、そのサーバに接続するクライアントプログラムを作成します。
まずサーバアプリケーションのプログラムを示します。サーバプログラムの作成方法は次節で説明します。ここではとりあえずプログラムをコンパイルして、実行する準備をしておきましょう。
リスト EchoServer.java
import java.net.Socket; import java.net.ServerSocket; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.io.IOException; public class EchoServer { public static final int ECHO_PORT = 10007; public static void main(String args[]) { ServerSocket serverSocket = null; Socket socket = null; try { serverSocket = new ServerSocket(ECHO_PORT); System.out.println("EchoServerが起動しました(port=" + serverSocket.getLocalPort() + ")"); socket = serverSocket.accept(); System.out.println("接続されました " + socket.getRemoteSocketAddress() ); BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintWriter out = new PrintWriter(socket.getOutputStream(), true); String line; while ( (line = in.readLine()) != null ) { System.out.println("受信: " + line); out.println(line); System.out.println("送信: " + line); } } catch (IOException e) { e.printStackTrace(); } finally { try { if (socket != null) { socket.close(); } } catch (IOException e) {} try { if (serverSocket != null) { serverSocket.close(); } } catch (IOException e) {} } } }