美文网首页
一个简单的BIO服务器示例1

一个简单的BIO服务器示例1

作者: 周大聪明 | 来源:发表于2019-01-24 11:24 被阅读0次

任务

  • 用BIO写一个服务器程序
  • 在服务端打印客户端传来的字符串
  • 用telnet命令向服务器发消息验证结果并分析BIO特点

编码

public class SimpleSingleThreadBIOServer {
    public static void main(String[] args){
        try {
            ServerSocket server = new ServerSocket(5555);
            System.out.println("服务端已启动");
            Socket socket = server.accept();
            System.out.println("获取客户端连接");
            BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            String lineStr;
            System.out.println("准备接收数据");
            while(!(lineStr = input.readLine()).equals("exit")){
                System.out.println(lineStr);
            }
            socket.close();
            System.out.println("服务端已关闭");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

验证

1.启动服务端程序

image.png
2.通过telnet命令连接服务端
在命令行输入telnet localhost 5555
windows下telnet客户端是不开启的,请自行百度开启telnet客户端
image.png
连接成功后,命令行进入黑板界面
image.png
连接成功后,服务端准备接收数据
image.png
给服务端随便发几条消息
image.png
另外开一个命令行,用telnet连接服务端并发送消息,我们发现服务端毫无反应
image.png
给服务端发送exit,发现服务端退出
image.png

总结

  • BIO编程模型简单,复杂度低
  • server.accept()方法会阻塞,直到一个连接建立
  • input.readLine()方法会阻塞,直到客户端发送新的一行数据
  • 在此例中,无法并发建立多连接

那么问题来了,如果要并发,我们需要怎么办?
1.建立连接需要调用server.accept(),所以我们在循环里调用它
2.但是它又是阻塞的,所以我们每拿到个socket,都需要扔到子线程里去处理

相关文章

  • Java NIO基础,比对BIO的优势

    一、BIO实现一个服务器 为了更好的演示BIO与NIO之间的区别,我们先用一个服务器示例来了解一个BIO实现网络通...

  • 一个简单的BIO服务器示例1

    任务 用BIO写一个服务器程序 在服务端打印客户端传来的字符串 用telnet命令向服务器发消息验证结果并分析BI...

  • Netty EventLoop与IO模型整理

    netty示例 maven依赖 echo服务器示例 echo服务器测试 IO模型 BIO模型 伪异步IO NIO模...

  • 一个简单的BIO服务器示例2

    任务 对示例1进行的优化https://www.jianshu.com/p/eb3f0d565a35 用BIO编写...

  • BIO编程

    BIO 1 BIO概述 1.1 I/O模型 Java BIO:同步并阻塞,服务器实现模式为一个连接一个线程,即客户...

  • Socket 编程之 BIO

    本文介绍基于 BIO 实现 Socket 编程的方法及问题。 目录 BIO 简介 BIO Socket 代码示例 ...

  • 一个简单的Hello World服务器

    学习网络编程,基本上都是从一个简单的BIO服务器开始的,一个简单的C语言写的Helloworld服务器如下: 当然...

  • 2019年Java面试题(四) IO

    1. Java中的NIO,BIO,AIO分别是什么 BIO:同步并阻塞,服务器实现模式为一个连接一个线程,即客户端...

  • 小记tomcat三种运行模式

    一、Connector有bio、nio、apr三种运行模式 1、Java BIO : 同步并阻塞,服务器实现模式为...

  • 【NIO】NIO实现HTTP服务器

    NIO 实现的HTTP服务器该版本只处理了静态资源,如需要处理动态资源可参考上一篇文章【BIO】基于BIO实现简单...

网友评论

      本文标题:一个简单的BIO服务器示例1

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