ミニマリストのJavaソケットBIOデモ

ミニマバージョン

最近の波ネッティーを学ぶ準備ができて、しかし自分自身のJava NIO、BIOに精通していない、AIO、馴染みに精通して最初。

:最初の文書にカンカン全てのソケットについて

この文書では、長すぎるったらしいです。時には彼らはただ、再びノックする一方で輝いている、私はできない眠いああ、ビデオチュートリアルや姉妹講義を見つけるために、どこから始めればわかりませんでした。

私は、主な方法とSoutは王で行く乱交何Sl4j @ @Testを与えましたd_01

いくつかの単語の男は、直接コード及び業績に、と述べました。

サーバーコード:

public static void main(String[] args) {
        final int PORT = 8899;
        ServerSocket serverSocket = null;
        BufferedWriter writer = null;
        try {
            serverSocket = new ServerSocket(PORT);
            System.out.println("服务器已启动!正在监听端口"+PORT);
            while (true){
               Socket socket = serverSocket.accept();
                System.out.println("客户端 "+socket.getPort()+" 已连接");
                BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
                String message = reader.readLine();
                if (message != null){
                    System.out.println("收到一条来自客户端 "+socket.getPort()+" 发送的消息:"+message);
                }
                //加了\n readLine才能生效
                writer.write("你才是" + message + "\n");
                writer.flush(); //清理缓冲区
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if(writer != null){
                try {
                    writer.close();
                    System.out.println("服务器挂掉了。。再见");
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

クライアントコード:

    public static void main(String[] args) {
        final String Host = "127.0.0.1";
        final int Port = 8899;
        BufferedWriter writer = null;
        try {
            Socket socket = new Socket(Host,Port);
            BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
            BufferedReader console = new BufferedReader(new InputStreamReader(System.in));
            String message = console.readLine();
            writer.write(message+"\n");
            writer.flush();

            String responseMsg = reader.readLine();
            System.out.println("收到了来自服务器的回复:" + responseMsg);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if(writer != null){
                try {
                    writer.close();
                    System.out.println("客户端关闭了连接");
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

実行するには、サーバーのコードは、この時間は、サービスが正常に開始しました!

ミニマリストのJavaソケットBIOデモ

そして、クライアントコードを実行し、サービスおよびクライアント接続は成功です!:

ミニマリストのJavaソケットBIOデモ

クライアントは、メッセージを送信します。

ミニマリストのJavaソケットBIOデモ

ミニマリストのJavaソケットBIOデモ

マルチスレッド版

このチュートリアルは、意志、クライアントの訪問があるたびに、実際には、サーバ側コードは、内部クラスの継承スレッドは、whileループのように別々に抽出部で再利用することができ、マルチスレッドバージョンでありますクライアントの要求を処理するために専用のスレッドを開きます

ない限り、ループは決して疲れながら、クライアントと対応するリターンの要求の受信の1つのオーダーの結果に応じてサーバー側のコード、実際には、コードのミニマリストのバージョンは、上にも、より完全にいくつかのクライアントを複製することができ、かつ同時に実行します停電d_02

概要

これは、それを使用するために、私はTCP / IPよりも多く、そのセットを基本原理として、何もシンプルな比率を感じない、BIOの伝説である(私は非常に精通していませんが...)

次は徐々に深まっます。

PicGoプラグイン何とか過程の写真をアップロードするために失敗したのtyporaは、もはや絹のような、いくつかの気分に影響を与え、利用できるどこでも上の理由ではありませんされていません。

このような人生は、チョコレートの部分を知ることはありませんすることは甘く苦いです。

おすすめ

転載: blog.51cto.com/14047097/2477149