传统单线程服务端

public class OioServer {

public static void main(String[] args) throws IOException {
    //创建socket服务,监听10101端口
    ServerSocket server = new ServerSocket(10101);
    System.out.println("服务器启动!");
    while(true){
        //获取一个套接字[阻塞]
        final Socket socket = server.accept();
        System.out.println("一个新客户端连接!");
        //单线程业务处理
        handler(socket);
    }
}

/**
 * 读取数据
 * */
public static void handler(Socket socket){
    try{
        byte[] bytes = new byte[1024];
        InputStream inputStream = socket.getInputStream();

        while(true){
            //读取数据[阻塞]
            int read = inputStream.read(bytes);
            if(read!=-1){
                System.out.println(new String(bytes,0,read));
            }else{
                break;
            }
        }
    } catch (IOException e) {
        e.printStackTrace();
    }finally {
        System.out.println("socket关闭");
        try {
            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
}

对于传统的单线程服务器来说,直接处理一个连接,必须将第1个客户端关闭,第2个客户端才可以连接进来。测试方法,在终端输入telnet localhost 10101模拟客户端,一个窗口就是一个客户端。
这种方式,相当于,你去饭店吃饭,店里只有一个服务员,这个服务员服务完一个客人走了以后才能服务下一个

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,488评论 19 139
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,739评论 11 349
  • 一、概念(载录于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434阅读 8,724评论 6 152
  • 世间好物不坚牢,彩云易散琉璃脆。 某天,看着杨绛先生的《我们仨》,转过头去看着先生,冒出来一句:我好羡慕杨先生这样...
    桃酥1618阅读 577评论 8 5
  • 今日晴天
    了凡私塾阅读 312评论 0 0

友情链接更多精彩内容