Geekroid-ギークロイド(仮)|ITエンジニアの日常をささいな情報で彩るコラム

ITエンジニアの転職

サーバー側のソケットを操作する

ソケット通信では、通信を試みるコンピューター(クライアント)と待ち受けるコンピューター(サーバー)とが存在します。

たとえば、以下にサーバーソケットの最小限のコードを示します。クライアントからなんらかの入力を受け取ると、その値を大文字に変換したものをクライアントに返します。サーバー側には、入力された値をそのまま表示します。

	// サーバーソケットを生成&待機
ServerSocket server = new ServerSocket();
server.bind(new InetSocketAddress("localhost", 8080));
Socket socket = server.accept();

	// 入出力のためのReader/Writerを生成
BufferedReader reader = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
PrintWriter writer = new PrintWriter(socket.getOutputStream(), true);

	// 入力を受け取ったら、大文字に変換の上で応答
while (true) {
  String line = reader.readLine();
  if (line.equals("¥¥q")) { break; }
  writer.println(line.toUpperCase());
  System.out.println(line);
}

socket.close();
server.close();

↓

alpha
project	… クライアントから受け取った値を表示

※クライアント側の結果は以下を参照
http://java-code.jp/259

ソケット固有の操作はソースの2,3,4行目の部分だけです。bindメソッドは、ソケットを指定のIPアドレス/ポート番号にバインドします。acceptメソッドは、クライアントからの要求を待機します。要求を受け付けたタイミングで、ソケットを取得します。

ソケットを取得できてしまえば、あとはこれをもとに、入力/出力のためのReader/Writerを生成し、読み込みや書き込みを行います。読み書きの方法については、「ストリーム」節で触れています。

ソケット通信
サーバー側のソケットを操作する
クライアント側のソケットを操作する
URLクラス

Geekroid-ギークロイド(仮)|ITエンジニアの日常をささいな情報で彩るコラム

ITエンジニアの転職