java 基于TCP协议的SOCKET的编程和通信——模拟用户登录(1)

参考文档:

https://www.sxt.cn/Java_jQuery_in_action/twelve-tcpsocket.html

参考视频:

https://www.bilibili.com/video/BV1ct411n7oG?p=244

1.代码功能

在console下实现客户端输入用户名密码,服务器端能接收到

2.学习重点

1.客户端和服务器端的通信关系
2.通过Socket实现通信的流程(7步)
3.BufferedReader获取键盘输入(和Scanner区别)

3.客户端代码

3.创建客户端Socket,并设置服务器的IP及端口
4.BufferedReader获取键盘输入
5.创建数据输出流dos(客户端获取Socket的输出流)以writeUTF函数把数据传过去
7.关闭数据流和客户端
package com.sxt.tcp;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;

/**
 * 熟悉流程
 * 创建客户端
 * 1.建立连接:使用Socket创建客户端+服务的地址和端口
 * 2.操作:输入输出流操作
 * 3.释放资源
 * @author Yangxiaoxia
 *
 */
public class Client {
    public static void main(String[] args) throws UnknownHostException, IOException {
        System.out.println("-----Client-----");
        BufferedReader console =new BufferedReader(new InputStreamReader(System.in));
        System.out.println("请输入用户名:");
        String uname=console.readLine();
        System.out.println("请输入密码:");
        String upwd =console.readLine();
        //1.建立连接:使用Socket创建客户端+服务的地址和端口
        Socket client=new Socket("localhost",8888);
        //2.操作:输入输出流操作
        DataOutputStream dos=new DataOutputStream(client.getOutputStream()); 
        dos.writeUTF("uname="+uname+"&"+"upwd"+upwd); 
        dos.flush();
        //3.释放资源
        dos.close();
        client.close();
    }
}

4.服务器端代码

1.通过ServerSocket类创建server,带监听端口
2.ServerSocket调用accept()方法,阻塞式等待client连接
6.创建数据输入流dis(客户端获取Socket的输入流)以readUTF函数读取客户端传来的数据
8.关闭数据流和服务器端
package com.sxt.tcp;

import java.io.DataInputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 熟悉流程
 * 创建服务器
 * 1.指定端口 使用ServerSocket创建服务器
 * 2.阻塞式等待连接 accept
 * 3.操作:输入输出流操作
 * 4.释放资源
 * @author Yangxiaoxia
 *
 */
public class Server {
    public static void main(String[] args) throws IOException {
        System.out.println("------Server-------");
         // 1.指定端口 使用ServerSocket创建服务器
        ServerSocket server=new ServerSocket(8888);
         // 2.阻塞式等待连接 accept
        Socket client=server.accept();
        System.out.println("一个客户端建立了连接");
         // 3.操作:输入输出流操作
        DataInputStream dis=new DataInputStream(client.getInputStream());
        String data=dis.readUTF();
        System.out.println(data);
         //4.释放资源
        dis.close();
        client.close();
        server.close();
    }
}

你可能感兴趣的:(java 基于TCP协议的SOCKET的编程和通信——模拟用户登录(1))