zoukankan      html  css  js  c++  java
  • Socket

    1. ServerSocket  服务端,可通过accept方法监听请求,监听到请求后返回Socket
      1. package com.sycamore.demo2.controller.socket;
        
        import java.io.BufferedReader;
        import java.io.InputStreamReader;
        import java.io.PrintWriter;
        import java.net.ServerSocket;
        import java.net.Socket;
        
        /**
         * 1.创建ServerSocket
         * 2.调用accept 等待请求
         * 3.收到请求后,用返回的Socket创建Reader和Writer来接收和发送数据
         *    Reader接收到数据后保存到line,然后打印到控制台
         *    再将数据发送到client,告诉client接收到的是什么数据
         */
        public class Server {
        
            public static void main(String arg[]){
        
                try {
                    //1.创建一个ServerSocket监听8080端口
                    ServerSocket server = new ServerSocket(8080);
                    //2.accept方法进行监听,程序停下来等待连接请求,接收到请求后返回Socket
                    Socket socket = server.accept();
                    //3.使用socket进行通信,创建BufferedReader读取数据
                    BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                    String line  = is.readLine();
        
                    System.out.println("从客户端接收的数据:"+line);
        
                    //创建PrintWriter,用于发送数据
                    PrintWriter pw = new PrintWriter(socket.getOutputStream());
                    pw.println("接收数据:"+line);
                    pw.flush();
        
                    //关闭资源
                    pw.close();
                    is.close();
                    socket.close();
                    server.close();
        
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        }
    2. Socket  用于具体完成数据传输,客户端直接使用Socket发起请求并传输数据
    package com.sycamore.demo2.controller.socket;
    
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.Socket;
    
    /**
     * 启动后自动将msg发送给服务端,然后再接收服务端返回的数据并打印到控制台
     */
    public class Client {
        public static void main(String arg[]){
    
            String msg = "客户端数据";
    
            try {
                //创建Socket。连接本机8080端口
                Socket socket = new Socket("127.0.0.1",8080);
                //使用Socket创建PrintWriter和BufferedReader进行读写数据
                PrintWriter pw = new PrintWriter(socket.getOutputStream());
                BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                //发送数据
                pw.println(msg);
                pw.flush();
                //接收数据
                String line = is.readLine();
                System.out.println("从服务端接收的数据:"+line);
    
                //关闭资源
                pw.close();
                is.close();
                socket.close();
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }
  • 相关阅读:
    angularjs-ngTable select filter
    angularjs-ngModel 控制页面的宽度
    angularjs-ngModel传值问题
    Jquery中去除左右空格
    Python命令行下退格、删除、方向键乱码问题解决
    linux解压.tar.xz的方法
    python OS模块详解
    pip is configured with locations that require TLS/SSL, however the ssl module in Python is not
    centos7 python2.7.5 升级python3.6.4
    使用mkfs.ext4格式化大容量磁盘
  • 原文地址:https://www.cnblogs.com/sycamore0802/p/11422970.html
Copyright © 2011-2022 走看看