ネットワークプログラミング 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) {}
}
}
}

