• TCP编程


    1.客户端
        * 创建Socket连接服务端(指定ip地址,端口号)通过ip地址找对应的服务器
        * 调用Socket的getInputStream()和getOutputStream()方法获取和服务端相连的IO流
        * 输入流可以读取服务端输出流写出的数据
        * 输出流可以写出数据到服务端的输入流
    * 2.服务端
        * 创建ServerSocket(需要指定端口号)
        * 调用ServerSocket的accept()方法接收一个客户端请求,得到一个Socket
        * 调用Socket的getInputStream()和getOutputStream()方法获取和客户端相连的IO流
        * 输入流可以读取客户端输出流写出的数据
        * 输出流可以写出数据到客户端的输入流
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.Socket;
    import java.net.UnknownHostException;
    import java.util.Scanner;
    
    public class demon1_client {
        /*
         * 1.客户端
        * 创建Socket连接服务端(指定ip地址,端口号)通过ip地址找对应的服务器
        * 调用Socket的getInputStream()和getOutputStream()方法获取和服务端相连的IO流
        * 输入流可以读取服务端输出流写出的数据
        * 输出流可以写出数据到服务端的输入流
         */
        public static void main(String[] args) throws IOException {
            Socket socket = new Socket("localhost", 12345);
            
            InputStream is = socket.getInputStream();       //客户端输入流
            OutputStream os = socket.getOutputStream();   
            
            byte[] arr = new byte[1024];
            int len = is.read(arr);     //   读入  服务端歇过来的数据
            System.out.println(new String(arr,0,len));
            
            os.write("学习挖掘机哪家强?".getBytes());   // 客户端向服务器写数据
            
            socket.close();
            
        }
    
    }
    public class demon1_server {
        /*
         * 2.服务端
        * 创建ServerSocket(需要指定端口号)
        * 调用ServerSocket的accept()方法接收一个客户端请求,得到一个Socket
        * 调用Socket的getInputStream()和getOutputStream()方法获取和客户端相连的IO流
        * 输入流可以读取客户端输出流写出的数据
        * 输出流可以写出数据到客户端的输入流
    
         */
        public static void main(String[] args) throws IOException {
            ServerSocket server = new ServerSocket(12345);
            Socket socket = server.accept();       //  接收客户端的 socket  
            
            InputStream is = socket.getInputStream();       //客户端输入流
            OutputStream os = socket.getOutputStream();
            
            os.write("百度一下,你就知道".getBytes());   // 服务器向客户端写出数据
            
            byte[] arr = new byte[1024];
            int len = is.read(arr);
            System.out.println(new String(arr,0,len));     //  读取客户端发来的数据
            
            socket.close();
        }
    
    }

    代码优化

    网络编程(TCP协议)
    * 1.客户端
        * 创建Socket连接服务端(指定ip地址,端口号)通过ip地址找对应的服务器
        * 调用Socket的getInputStream()和getOutputStream()方法获取和服务端相连的IO流
        * 输入流可以读取服务端输出流写出的数据
        * 输出流可以写出数据到服务端的输入流
    * 2.服务端
        * 创建ServerSocket(需要指定端口号)
        * 调用ServerSocket的accept()方法接收一个客户端请求,得到一个Socket
        * 调用Socket的getInputStream()和getOutputStream()方法获取和客户端相连的IO流
        * 输入流可以读取客户端输出流写出的数据
        * 输出流可以写出数据到客户端的输入流
    
    ###26.17_网络编程(TCP协议代码优化)
    * 客户端
    
            Socket socket = new Socket("127.0.0.1", 9999);        //创建Socket指定ip地址和端口号
            InputStream is = socket.getInputStream();            //获取输入流
            OutputStream os = socket.getOutputStream();            //获取输出流
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            PrintStream ps = new PrintStream(os);
            
            System.out.println(br.readLine());
            ps.println("我想报名就业班");
            System.out.println(br.readLine());
            ps.println("爷不学了");
            socket.close();
    * 服务端
    
            ServerSocket server = new ServerSocket(9999);    //创建服务器
            Socket socket = server.accept();                //接受客户端的请求
            InputStream is = socket.getInputStream();        //获取输入流
            OutputStream os = socket.getOutputStream();        //获取输出流
            
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            PrintStream ps = new PrintStream(os);
            
            ps.println("欢迎咨询XXXX");
            System.out.println(br.readLine());
            ps.println("报满了,请报下一期吧");
            System.out.println(br.readLine());
            server.close();
            socket.close();
    
    网络编程(服务端是多线程的)
        ServerSocket server = new ServerSocket(9999);    //创建服务器
            while(true) {
                final Socket socket = server.accept();                //接受客户端的请求
                new Thread() {
                    public void run() {
                        try {
                            BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                            PrintStream ps = new PrintStream(socket.getOutputStream());
                            ps.println("欢迎咨询XXXX");
                            System.out.println(br.readLine());
                            ps.println("报满了,请报下一期吧");
                            System.out.println(br.readLine());
                            socket.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }.start();
            }
        }
    竹杖芒鞋轻胜马,一蓑烟雨任平生。 回首向来萧瑟处,也无风雨也无晴。
  • 相关阅读:
    项目01-nginx模块
    Spark机器学习
    项目01-手机端模块
    Spark内存管理
    Spark Streaming
    Spark SQL
    Spark Job调度
    Spark master节点HA配置
    机器学习
    07、Spark集群的进程管理
  • 原文地址:https://www.cnblogs.com/yaobiluo/p/11357943.html
Copyright © 2020-2023  润新知