• 通过Socket实现TCP编程,用户登录之服务器相应客户端,客户端和服务端之间的通信


    服务器端:

      1.创建ServerSocket对象,绑定监听端口;

      2.通过accept()方法监听客户端请求;

      3.建立连接后通过输入流读取客户端发送的请求信息;

      4.通过输出流向客户端发送响应信息;

    package com.wxd.socket;
    
    import java.io.*;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    /**
     * 基于TCP协议的Socket通信,实现用户登录,服务端
     */
    public class Server {
        public static void main(String[] args) {
            try {
                //服务端
                //1、创建一个服务器端Socket,即ServerSocket,指定绑定的端口,并监听此端口
                ServerSocket serverSocket =new ServerSocket(10086);//1024-65535的某个端口
                //2、调用accept()方法开始监听,等待客户端的连接
                Socket socket = serverSocket.accept();
                //3、获取输入流,并读取客户端信息
                InputStream is = socket.getInputStream();
                InputStreamReader isr =new InputStreamReader(is);
                BufferedReader br =new BufferedReader(isr);
                String info =null;
                while((info=br.readLine())!=null){
                    System.out.println("我是服务器,客户端说:"+info);
                }
                socket.shutdownInput();//关闭输入流
                //4、获取输出流,响应客户端的请求
                OutputStream os = socket.getOutputStream();
                PrintWriter pw = new PrintWriter(os);
                pw.write("欢迎您!");
                pw.flush();
                //5、关闭资源
                pw.close();
                os.close();
                br.close();
                isr.close();
                is.close();
                socket.close();
                serverSocket.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    控制台输出:

        我是服务器,客户端说:用户名:admin;密码:123

    客户端:

      1.创建socket对象,指明需要连接的服务器地址和端口号;

      2.建立连接后,通过输出流向服务器端发送请求信息;

      3.通过输入流获取服务器的响应信息;

      4.关闭相关资源;

    package com.wxd.socket;
    
    import java.io.*;
    import java.net.Socket;
    
    /**
     * 基于TCP协议的Socket通信,实现客户端
     */
    public class Client {
        public static void main(String[] args) {
            try {
                //客户端
                //1、创建客户端Socket,指定服务器地址和端口
                Socket socket =new Socket("localhost",10086);
                //2、获取输出流,向服务器端发送信息
                OutputStream os = socket.getOutputStream();//字节输出流
                PrintWriter pw =new PrintWriter(os);//将输出流包装成打印流
                pw.write("用户名:admin;密码:123");
                pw.flush();
                socket.shutdownOutput();
                //3、获取输入流,并读取服务器端的响应信息
                InputStream is = socket.getInputStream();
                BufferedReader br = new BufferedReader(new InputStreamReader(is));
                String info = null;
                while((info=br.readLine())!=null){
                    System.out.println("我是客户端,服务器说:"+info);
                }
                //4、关闭资源
                br.close();
                is.close();
                pw.close();
                os.close();
                socket.close();
            }catch(IOException e){
                e.printStackTrace();
            }
        }
    }

     

    控制台输出:  

    我是客户端,服务器说:欢迎您!

    Process finished with exit code 0

  • 相关阅读:
    Kubernetes(K8S)集群部署搭建图文教程(最全)
    Kubernetes核心原理和搭建
    Navicat Premium 15注册出现“rsa public key not find”
    centos 7永久修改主机名
    docker 部署jenkins,及构建执行scp指令,一直处于构建状态以及钉钉通知配置
    jenkins 无法连接仓库:Command /usr/bin/git ls-remote -h
    mysql 8.0安装包下载地址
    centos7安装xtrabackup 物理备份工具与使用
    Linux vi/vim编辑器
    解决报错docker 启动报 WARNING: IPv4 forwarding is disabled. Networking will not work.
  • 原文地址:https://www.cnblogs.com/MrXiaoAndDong/p/SocketOneToOne.html
Copyright © 2020-2023  润新知