• BIO的简单Demo


    package jesse.test1;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.InetAddress;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.util.concurrent.Executor;
    import java.util.concurrent.Executors;
    
    public class DemoServer extends Thread{
        
        private ServerSocket serverSocket;
        
        public int getPort(){
            return serverSocket.getLocalPort();
        }
        
        public void run(){
            try {
                serverSocket = new ServerSocket(0);
                //使用多线程实现
                Executor executor = Executors.newFixedThreadPool(8);
                while(true){
                    Socket socket = serverSocket.accept();
                    RequestHandler requestHandler = new RequestHandler(socket);
                    /*requestHandler.start();*/
                    executor.execute(requestHandler);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }finally{
                if(serverSocket != null){
                    try {
                        serverSocket.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
        
        public static void main(String[] args) {
            DemoServer server = new DemoServer();
            server.start();
            try {
                Socket client = new Socket(InetAddress.getLocalHost(), server.getPort());
                BufferedReader bufferReader = new BufferedReader(new InputStreamReader(client.getInputStream()));
                System.out.println(bufferReader.readLine());
                
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        
    }
    /**
     * 1、服务端ServerSocket,启动绑定端口
     * 2、调用accept,阻塞等待客户端连接
     * 3、客户端连接后,启动一个单独线程负责处理客户端请求
     * 
     * 也可以使用多线程来处理连接不是很多的情况
     */
    
    
    class RequestHandler extends Thread{
        private Socket socket;
    
        public RequestHandler(Socket socket) {
            this.socket = socket;
        }
        
        @Override
        public void run(){
            try {
                PrintWriter out = new PrintWriter(socket.getOutputStream());
                out.println("Hello World");
                out.flush();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        
    }
  • 相关阅读:
    Maven:mvn 命令的基本使用
    Java:SPI机制
    Bootstrap3 排版-内联文本元素
    Bootstrap3 排版-页面主体
    Bootstrap3 排版-标题
    Bootstrap3 栅格系统-Less mixin 和变量
    Bootstrap3 栅格系统-列排序
    Bootstrap3 栅格系统-嵌套列
    Bootstrap3 栅格系统-列偏移
    Bootstrap3 栅格系统-实例:响应列重置(Responsive column resets)
  • 原文地址:https://www.cnblogs.com/atomicbomb/p/9965100.html
Copyright © 2020-2023  润新知