zoukankan      html  css  js  c++  java
  • java scoket Blocking 阻塞IO socket通信一

    package bhz.bio;
    
    import java.io.IOException;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    
    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 .. ");
                //进行阻塞
                Socket socket = server.accept();
                //新建一个线程执行客户端的任务
                new Thread(new ServerHandler(socket)).start();
                
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if(server != null){
                    try {
                        server.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                server = null;
            }
            
            
            
        }
    
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
    }
    package bhz.bio;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.Socket;
    
    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) {
                        e.printStackTrace();
                    }
                }
                if(out != null){
                    try {
                        out.close();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
                if(socket != null){
                    try {
                        socket.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                socket = null;
            }
            
            
        }
    
    }

    客户端的代码:

    package bhz.bio;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.Socket;
    
    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("接收到客户端的请求数据...");
                out.println("接收到客户端的请求数据1111...");
                String response = in.readLine();
                System.out.println("Client: " + response);
                
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if(in != null){
                    try {
                        in.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if(out != null){
                    try {
                        out.close();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
                if(socket != null){
                    try {
                        socket.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                socket = null;
            }
        }
    }

    我们来对上面的功能进行总结:

  • 相关阅读:
    网站app被劫持怎么办?HTTPDNS阿里云域名防劫持, DNSPod 移动解析服务 D+
    MySQL数据库读写分离、读负载均衡方案选择
    ubuntu14.04无法安装Curl,需要先升级sudo apt-get update
    PHP获取6位数随机数,获取redis里面不存在的6位随机数(设置24小时过时)
    升级到php7相关问题,日请求过亿QQ会员活动平台PHP7升级实践
    干货阿里巴巴 开源软件列表,先收藏起来
    让前端独立于后端进行开发,模拟数据生成器Mock.js
    左连接LEFT JOIN 连接自己时的查询结果测试
    禁止火狐浏览器缓存input标签方法
    Jquery图片上传组件,支持多文件上传
  • 原文地址:https://www.cnblogs.com/kebibuluan/p/7661074.html
Copyright © 2011-2022 走看看