美文网首页
阻塞IO实现echo打印的server

阻塞IO实现echo打印的server

作者: 联想桥南 | 来源:发表于2017-10-01 22:20 被阅读0次
public class EchoServer {

    public EchoServer(int port) throws IOException {
        ServerSocket serverSocket = new ServerSocket(port);
        System.out.println("starting echo server on port: " + port);
        while (true) {
            //监听8888端口,客户端的请求
            Socket socket = serverSocket.accept();
            System.out.println("accept connection from client");
            InputStream in = socket.getInputStream();
            OutputStream out = socket.getOutputStream();

            byte[] b = new byte[4 * 1024];
            int len;
            while ((len = in.read(b)) != -1) {
                System.out.println("len="+len);
                out.write(b, 0, len);
            }
            System.out.println("once client request end;closing connection with client");
            out.close();
            in.close();
            socket.close();
        }
    }

    public static void main(String[] args) throws IOException {
        new EchoServer(8888);
    }
}

java io的类的一些定义:

  1. inputStream和outputStream是所有流的顶层抽象类。
    inputStream水龙头出水的地方,outputStream是所有能接收水的地方。所以inputStream对应的是read方法,outputStream是write方法。
  2. 这些设备可以是磁盘文件、键盘(输入设备)、显示器(输出设备)、打印机(输出设备)、网络套接字等等
  3. read(b)方法,会阻塞直到可用,文件到尾段,或者异常。(This method blocks until input data is
    available, end of file is detected, or an exception is thrown

    方法返回读取的字节数,返回-1表示没有可读取数据。

inputStream和outputStream参考http://www.cnblogs.com/springcsc/archive/2009/12/03/1616187.html

启动server后,客户端telnet 127.0.0.1 8888测试下。发现长度每次打印的值多2,是流的头部有两位存储长度。

echo 客户端 echo server端log

相关文章

  • 阻塞IO实现echo打印的server

    java io的类的一些定义: inputStream和outputStream是所有流的顶层抽象类。inputS...

  • nio实现echo打印的server

    Socket 和ServerSocke 是一对 他们是java.net下面实现socket通信的类SocketCh...

  • Java IO快速入门

    网络IO实现方式分为BIO(阻塞IO)、线程池伪异步IO、NIO(非阻塞IO)、AIO(异步非阻塞IO); 异步、...

  • 高性能IO模型与线程模型

    IO模型 linux系统实现IO通信,主要是依靠几个系统调用函数实现的: recvFrom实现非阻塞和阻塞IO,该...

  • NIO教程 ——检视阅读(下)

    Non-blocking Server非阻塞服务器 非阻塞服务器代码 非阻塞IO通道(Non-blocking I...

  • Netty深入浅出(一)入门

    传统Socket中,NIO和IO的比较(Nio知识回顾) IO 阻塞点: server.accept(); 和单线...

  • Java IO

    Before IO 分为:同步、异步阻塞、非阻塞 同步和异步是目的,阻塞和非阻塞是实现方式。 一个IO操作其实分成...

  • NIO

    传统的socket分析 传统IO与NIO的比较 传统IO特点阻塞点server.accept()inputStre...

  • 一起来写web server 06 -- 单线程非阻塞IO版本

    一起来写web server 06 -- 单线程非阻塞IO版本 阻塞IO的效率是在是低下,你如果要写高性能的web...

  • 深入浅出nodejs(异步I/O)

    异步IO实现现状 I/O的阻塞与非阻塞:IO对于操作系统内核而言,只有阻塞与非阻塞两种方式。阻塞模式的I/O会造成...

网友评论

      本文标题:阻塞IO实现echo打印的server

      本文链接:https://www.haomeiwen.com/subject/htjaextx.html