【Java】ソケット通信プログラミング

投稿者: | 2011年7月4日

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”という文字列を受け取らないと停止しない。

カテゴリー: Java

【Java】ソケット通信プログラミング」への1件のフィードバック

  1. ピンバック: 【Android】AndroidでSocket通信をする(クライアント編) – ザワプロ!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です