BIO编程

xiaoxiao2021-02-28  19

参考文档

public class Server { final static int PROT = 8765; public static void main(String[] args) { ServerSocket server = null; try{ server = new ServerSocket(PROT); System.out.println("server start ..."); //进行阻塞 等待客户端连接进来 1处于监听 Socket socket = server.accept();//3 服务端确认 //新建一个线程处理客户端任务 new Thread(new ServerHandler(socket)).start();//来多少创建多少线程,达到一定数量便会崩溃 }catch(Exception e){ e.printStackTrace(); }finally{ if(server != null){ try { server.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } server = null; } } }

public class ServerHandler implements Runnable{ private Socket socket; public ServerHandler(Socket socket){ this.socket = socket; } @Override public void run() { BufferedReader in = null; PrintWriter out = null; try{ in = new BufferedReader(new InputStreamReader(this.socket.getInputStream())); out = new PrintWriter(this.socket.getOutputStream(), true); String body = null; while(true){ body = in.readLine(); if(body == null){ break; } System.out.println("Server:"+body); out.println("服务器端回送响应的数据"); } }catch(Exception e){ e.printStackTrace(); }finally{ if(in != null){ try { in.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } }

public class Client { final static String ADDRESS = "127.0.0.1"; final static int PORT = 8765; public static void main(String[] args) { Socket socket = null; BufferedReader in = null; PrintWriter out = null; try{ socket = new Socket(ADDRESS,PORT);//2建立连接请求 in = new BufferedReader(new InputStreamReader(socket.getInputStream())); out = new PrintWriter(socket.getOutputStream(),true); //向服务端发送请求数据  out.println("接受到客户端请求的数据"); String response = in.readLine(); System.out.println("Client:"+response); }catch(Exception e){ e.printStackTrace(); }finally{ if(in != null){ try { in.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(out != null){ out.close(); } if(socket != null){ try { socket.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } }

 

//伪异步IO

public class HandlerExecutorPool { private ExecutorService executorService; public HandlerExecutorPool(int maxPoolSize,int queueSize) { this.executorService = new ThreadPoolExecutor(Runtime.getRuntime().availableProcessors(),    maxPoolSize,    120L,    TimeUnit.SECONDS,    new ArrayBlockingQueue<Runnable>(queueSize)); } public void execute(Runnable task){ this.executorService.execute(task); } }

public class ServerHandler implements Runnable{ private Socket socket; public ServerHandler(Socket socket) { this.socket = socket; } @Override public void run() { BufferedReader in = null; PrintWriter out = null; try{ in = new BufferedReader(new InputStreamReader(socket.getInputStream())); out = new PrintWriter(this.socket.getOutputStream(),true); String body = null; while(true){ body = in.readLine(); if(body == null){ break; } System.out.println("Server:"+body); out.println("Server response"); } }catch(Exception e){ e.printStackTrace(); }finally{ if(in != null){ try { in.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(out != null){ try { out.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(socket != null){ try { socket.close(); } catch (Exception e3) { e3.printStackTrace(); } } socket = null; } } }

public class Server { final static int PORT = 8765; public static void main(String[] args) { ServerSocket server = null; BufferedReader in = null; PrintWriter out = null; try{ server = new ServerSocket(PORT); System.out.println("server start"); Socket socket = null; //自己内部维护线程池  实现伪异步的I/O,通过线程池降低服务端的压力 HandlerExecutorPool executorPool = new HandlerExecutorPool(50, 1000);//实现伪异步的I/O while(true){ socket = server.accept(); executorPool.execute(new ServerHandler(socket)); } }catch(Exception e){ }finally{ if(in != null){ try { in.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(out != null){ try { out.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(server != null){ try { server.close(); } catch (Exception e3) { e3.printStackTrace(); } } server = null; } } }

public class Client { final static String ADDRESS = "127.0.0.1"; final static int PORT = 8765; public static void main(String[] args) { Socket socket = null; BufferedReader in = null; PrintWriter out = null; try{ socket = new Socket(ADDRESS,PORT); in = new BufferedReader(new InputStreamReader(socket.getInputStream())); out = new PrintWriter(socket.getOutputStream(),true); out.println("client request"); String response = in.readLine(); System.out.println("clinet:"+response); }catch(Exception e){ }finally{ if(in != null){ try { in.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(out != null){ try { out.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(socket != null){ try { socket.close(); } catch (Exception e3) { e3.printStackTrace(); } } socket = null; } } }

转载请注明原文地址: https://www.6miu.com/read-250177.html

最新回复(0)