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();
	}
}

猜你喜欢

转载自blog.csdn.net/SherryLovesCoding/article/details/109052203