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();
            }
        }
    }
  • 相关阅读:
    算法与数据结构实验题 5.2 Missile
    算法与数据结构实验题 2.3 击鼓传花
    算法与数据结构实验题 2.4 排队
    Linux 添加自定义命令
    转 32位linux内核2.6.38.2添加系统调用,编写类似"ps"命令模块显示进程信息
    Linux内核模块程序加载方法
    Linux下sched.h文件分析
    Kali 爆破和非爆破无线路由账号和密码+让别人无线掉线
    Kali基于路由器的ARP欺骗转发机制
    Kali nmap教程用法简介
  • 原文地址:https://www.cnblogs.com/sycamore0802/p/11422970.html
Copyright © 2011-2022 走看看