java 模拟登录 获取cookie_System

版本一 创建简单的连接

服务器端

package cn.hanquan.tcp;

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

/*
 * 创建服务器
 * 1、指定端口 使用ServerSocket创建服务器
 * 2、阻塞式等待链接 accept
 * 3、操作:输入输出操作
 * 4、释放资源
 */
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();
	}
}

客户端

package cn.hanquan.tcp;

import java.io.DataOutputStream;
import java.io.IOException;
import .Socket;
import .UnknownHostException;

/*
 * 创建客户端
 * 1、建立链接:使用Socket创建客户端+指定服务器的地址和端口
 * 2、操作:输入输出流操作
 * 3、释放资源
 */
public class Client {
	public static void main(String[] args) throws UnknownHostException, IOException {
		System.out.println("------Client------");
		// 1、建立链接:使用Socket创建客户端+指定服务器的地址和端口
		Socket client = new Socket("localhost", 8888);
		// 2、操作:输入输出流操作
		DataOutputStream dos = new DataOutputStream(client.getOutputStream());
		String data = "hello";
		dos.writeUTF(data);
		dos.flush();
		// 3、释放资源
		dos.close();
		client.close();
	}
}

运行结果

java 模拟登录 获取cookie_System_02

版本二:输入用户名、密码

server

package cn.hanquan.tcp;

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

/*
 * 创建服务器
 * 1、指定端口 使用ServerSocket创建服务器
 * 2、阻塞式等待链接 accept
 * 3、操作:输入输出操作
 * 4、释放资源
 */
public class Server {
	public static void main(String[] args) throws IOException {
		String name = "root";
		String pwd = "123";

		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 datas = dis.readUTF();
		// 分析
		String[] dataArray = datas.split(" ");
		System.out.println("你输入的用户名为:" + dataArray[0]);
		System.out.println("你输入的用户名为:" + dataArray[1]);

		String uname = dataArray[0];
		String upwd = dataArray[1];
		
		//发送结果
		DataOutputStream dos = new DataOutputStream(client.getOutputStream());
		if(uname.equals(name)&&upwd.contentEquals(pwd)) {//yes
			dos.writeUTF("登录成功");
		}else {//no
			dos.writeUTF("用户名或密码错误");
		}
		// 4、释放资源
		dis.close();
		client.close();
	}
}

client

package cn.hanquan.tcp;

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

/*
 * 创建客户端
 * 1、建立链接:使用Socket创建客户端+指定服务器的地址和端口
 * 2、操作:输入输出流操作
 * 3、释放资源
 */
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 + " " + upwd);
		dos.flush();

		// 接收结果
		DataInputStream dis = new DataInputStream(client.getInputStream());
		String datas = dis.readUTF();
		System.out.println(datas);
		
		// 3、释放资源
		dos.close();
		client.close();
	}
}

java 模拟登录 获取cookie_java 模拟登录 获取cookie_03


版本三:文件上传

server

package cn.hanquan.tcp;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import .ServerSocket;
import .Socket;

/*
 * 文件接收 大小无限制
 */
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、操作:文件存储
		InputStream is = new BufferedInputStream(new FileInputStream("头像.jpg"));
		OutputStream os = new BufferedOutputStream(new FileOutputStream("tcp.jpg"));
		byte[] flush = new byte[1024];
		int len = -1;
		while ((len = is.read(flush)) != -1) {
			os.write(flush, 0, len);
		}
		os.flush();

		// 4、释放资源
		is.close();
		os.close();
		client.close();
	}
}

client

package cn.hanquan.tcp;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import .Socket;
import .UnknownHostException;

/*
 * 文件上传 大小无限制
 */
public class Client {
	public static void main(String[] args) throws UnknownHostException, IOException {

		System.out.println("------Client------");
		
		// 1、建立链接:使用Socket创建客户端+指定服务器的地址和端口
		Socket client = new Socket("localhost", 8888);

		// 2、操作:文件上传
		InputStream is=new BufferedInputStream(new FileInputStream("头像.jpg"));
		OutputStream os=new BufferedOutputStream(client.getOutputStream());
		byte[]flush=new byte[1024];
		int len=-1;
		while((len=is.read(flush))!=-1) {
			os.write(flush,0,len);
		}
		os.flush();
		// 3、释放资源
		os.close();
		is.close();
		client.close();
	}
}

java 模拟登录 获取cookie_.net_04


版本四:多用户登录

服务端

(1)封装之前的服务端

package cn.hanquan.tcp;

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

/*
 * 服务器 多用户登录
 */
public class LoginMultiServer {
	public static void main(String[] args) throws IOException {
		System.out.println("------Server------");
		// 1、指定端口 使用ServerSocket创建服务器
		ServerSocket server = new ServerSocket(8888);
		boolean status = true;
		while (status) {
			// 2、阻塞式等待链接 accept
			Socket client = server.accept();
			System.out.println("一个客户端建立了链接");
			new Thread(new Channel(client)).start();// 成功连接,就开启一个线程检测登录
		}
	}
}

class Channel implements Runnable {
	Socket client;

	public Channel(Socket client) {
		this.client = client;
	}

	@Override
	// 3、操作:输入输出操作
	public void run() {
		DataInputStream dis = null;
		String datas = null;
		try {
			dis = new DataInputStream(client.getInputStream());
			datas = dis.readUTF();
			// 分析
			String[] dataArray = datas.split(" ");
			System.out.println("你输入的用户名为:" + dataArray[0]);
			System.out.println("你输入的用户名为:" + dataArray[1]);
			String uname = dataArray[0];
			String upwd = dataArray[1];
			// 发送结果
			DataOutputStream dos = new DataOutputStream(client.getOutputStream());
			if (uname.equals("root") && upwd.contentEquals("123")) {
				dos.writeUTF("登录成功");
			} else {
				dos.writeUTF("用户名或密码错误");
			}

			// 4、释放资源
			dis.close();
			client.close();

		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

(2)封装之后的服务端

package cn.hanquan.tcp;

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

/*
 * 服务器 多用户登录
 */
public class LoginMultiServer {
	public static void main(String[] args) throws IOException {
		System.out.println("------Server------");
		// 1、指定端口 创建服务器
		ServerSocket server = new ServerSocket(8888);
		boolean status = true;
		while (status) {
			// 2、阻塞式等待链接
			Socket client = server.accept();
			System.out.println("一个客户端建立了链接");
			
			//每建立一个连接就 new 一个线程
			new Thread(new Channel(client)).start();
		}
	}
}

class Channel implements Runnable {
	Socket client;

	// 构造器
	public Channel(Socket client) {
		this.client = client;
	}

	@Override
	public void run() {
		String datas = receive();
		boolean successLogIn = check(datas);
		send(successLogIn);
	}

	// 接收客户端数据
	public String receive() {
		DataInputStream dis = null;
		String datas = null;

		try {
			dis = new DataInputStream(client.getInputStream());
			datas = dis.readUTF();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return datas;
	}

	// 检测登录是否成功
	public boolean check(String datas) {
		try {
			// 分析
			String[] dataArray = datas.split(" ");
			System.out.println("你输入的用户名为:" + dataArray[0]);
			System.out.println("你输入的用户名为:" + dataArray[1]);
			String uname = dataArray[0];
			String upwd = dataArray[1];
			// 发送结果
			if (uname.equals("root") && upwd.contentEquals("123")) {
				return true;
			} else {
				return false;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return false;
	}

	public void send(boolean flag) {
		try {
			DataOutputStream dos = new DataOutputStream(client.getOutputStream());
			if (flag)
				dos.writeUTF("登录成功");
			else
				dos.writeUTF("用户名或密码错误");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

客户端

package cn.hanquan.tcp;

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import .Socket;
import .UnknownHostException;
/*
 * 客户端
 */
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 + " " + upwd);
		dos.flush();

		// 接收结果
		DataInputStream dis = new DataInputStream(client.getInputStream());
		String datas = dis.readUTF();
		System.out.println(datas);

		// 3、释放资源
		dos.close();
		client.close();
	}
}

运行结果

java 模拟登录 获取cookie_System_05