zoukankan      html  css  js  c++  java
  • 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();
            }
        }
        
    }
  • 相关阅读:
    OCR中表格识别及WORD生成
    太阳能跟踪系统
    QA300太阳能移动电源
    OCR之表格识别
    2012112
    2012123
    2012121
    2011101
    201191
    2011828
  • 原文地址:https://www.cnblogs.com/atomicbomb/p/9965100.html
Copyright © 2011-2022 走看看