zoukankan      html  css  js  c++  java
  • 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();
            }
        }
    竹杖芒鞋轻胜马,一蓑烟雨任平生。 回首向来萧瑟处,也无风雨也无晴。
  • 相关阅读:
    go-zero尝试运行输出hello-world
    grpc客户端 服务端测试
    protobuf序列化
    protobuff3语法详情
    【转】普通程序员如何转向AI方向
    深度学习微软 azure-云服务器组 centos特殊内核版本 gpu NVIDIA 驱动及CUDA 11.0安装
    分享一个主要用于nas场景的集成了迅雷,百度网盘等软件的docker ubuntu vnc镜像-适用于x86环境
    以spark sql 维护spark streaming offset
    打通es及lucene应用,lucene应用es Query,应用完整的es query
    打通es及lucene应用,lucene应用es Query,结合非queryString查询(二)
  • 原文地址:https://www.cnblogs.com/yaobiluo/p/11357943.html
Copyright © 2011-2022 走看看