zoukankan      html  css  js  c++  java
  • BIO实例及分析



    public class BIOServer {
        public static void main(String[] args) throws Exception {
            //线程池机制
            //思路
            //1. 创建一个线程池
            //2. 如果有客户端连接,就创建一个线程,与之通讯(单独写一个方法)
            ExecutorService newCachedThreadPool = Executors.newCachedThreadPool();
            //创建ServerSocket
            ServerSocket serverSocket = new ServerSocket(6666);
            System.out.println("服务器启动了");
            while (true) {
                System.out.println("线程信息 id =" + Thread.currentThread().getId() + " 名字=" + Thread.currentThread().getName());
                //监听,等待客户端连接
                System.out.println("等待连接....");
                final Socket socket = serverSocket.accept();
                System.out.println("连接到一个客户端");
                //就创建一个线程,与之通讯(单独写一个方法)
                newCachedThreadPool.execute(new Runnable() {
                    public void run() { //我们重写
                        //可以和客户端通讯
                        handler(socket);
                    }
                });
            }
        }
    
        //编写一个handler方法,和客户端通讯
        public static void handler(Socket socket) {
            try {
                System.out.println("线程信息 id =" + Thread.currentThread().getId() + " 名字=" + Thread.currentThread().getName());
                byte[] bytes = new byte[1024];
                //通过socket 获取输入流
                InputStream inputStream = socket.getInputStream();
    
                //循环的读取客户端发送的数据
                while (true) {
                    System.out.println("线程信息 id =" + Thread.currentThread().getId() + " 名字=" + Thread.currentThread().getName());
                    System.out.println("read....");
                   int read =  inputStream.read(bytes);
                   if(read != -1) {
                       System.out.println(new String(bytes, 0, read
                       )); //输出客户端发送的数据
                   } else {
                       break;
                   }
                }
            }catch (Exception e) {
                e.printStackTrace();
            }finally {
                System.out.println("关闭和client的连接");
                try {
                    socket.close();
                }catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
    



  • 相关阅读:
    oracle中的DECODE
    服务器修改密码cmd
    oracle 创建用户,授权用户,创建表,查询表
    Oralce 处理字符串函数
    oracle 非数字型转数字型
    d3
    linux SVN 安装配置
    JAVA with Cassandra
    Struts2实现文件上传和下载
    xmanager 5图文使用教程
  • 原文地址:https://www.cnblogs.com/xidianzxm/p/12687959.html
Copyright © 2011-2022 走看看