TCP サーバ (TCP server)

Java

最もシンプルなネットワークサーバのサンプル。

import java.io.InputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class EchoServer {
  public static void main(String [] args) {
    try {
      ServerSocket ss = new ServerSocket(123);

      Socket s = ss.accept();
      System.out.println("connected");

      BufferedReader isr =
        new BufferedReader(new InputStreamReader(s.getInputStream()));
      PrintWriter pw =
        new PrintWriter(s.getOutputStream(), true);

      String line;
      while ((line = isr.readLine()) != null) {
        System.out.println(line);
        pw.println(line);
        if (line.equals("end")) {
          break;
        }
      }
      pw.close();
      isr.close();
      s.close();
    } catch (Exception e) {
      System.out.println("Error:"+e);
    }
  }
}

以上のプログラムを動作(root など、権限が無いと動作しない)させておき、同ホストから telnet クライアントで接続した例が以下。

$ telnet localhost 123
Trying 127.0.0.1...
Connected to atomic.jpn.ph (127.0.0.1).
Escape character is '^]'.
Hello
Hello
end
end
Connection closed by foreign host.

Hello, end と同じ行が2つずつあるのは、最初のものがクライアントから入力したもので、後のものがサーバからエコーバックされたもの。

サーバ側には Hello, end が print される。

メニューに戻る