Java网络编程--FTP协议模拟用户客户端登录

主要思路:

  • 用户在客户端输入用户名 发送给服务器
  • 服务器比对用户名 如果正确返回客户端一个值表示输入正确
  • 客户端收到服务器返回的表示用户名输入正确的值 ,让用户继续输入密码
  • 服务器收到用户输入的密码进行比对 如果输入正确 给用户返回登陆成功
package Login;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 
 * @author fzl
 * @Dare 2020-11-22 14:44:05
 * @Description
 *
 */
public class fuwuqi {
	public static void main(String[] args) throws IOException {
		ServerSocket serverSocket = new ServerSocket(1111);
		Socket socket = serverSocket.accept();
		/*
		 * 获取客户端用户输入的用户名
		 * 
		 * 服务器端保存的用户名和密码为: username:fzl password:123
		 */
		String username = "fzl";
		String password = "123";
		InetAddress address = socket.getInetAddress();
		address.getHostName();
		InputStream inputStream = socket.getInputStream();
		byte[] byt = new byte[1024];
		int len = inputStream.read(byt);
		String username_receive = new String(byt, 0, len);
		System.out.println(address + "---->" + username_receive);

		serverSocket.close();
		socket.close();
		inputStream.close();

		if (username_receive.equals(username)) {
			/*
			 * 判断用户输入的用户名是否正确 如果正确发送给客户端一串文字 让客户输入密码 如果不正确 告诉用户错误
			 */
			Socket socket_return = new Socket(InetAddress.getByName(String 客户端IP), 2222);
			OutputStream outputStream = socket_return.getOutputStream();
			String string_return = "用户名输入正确 请输入密码";
			outputStream.write(string_return.getBytes());
			socket_return.close();
			outputStream.close();

		} else {
			Socket socket_return = new Socket(InetAddress.getByName(String 客户端IP), 2222);
			OutputStream outputStream = socket_return.getOutputStream();
			String string_return = "用户名输入错误";
			outputStream.write(string_return.getBytes());
			socket_return.close();
			outputStream.close();
		}

	}
}

package Login;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
/**
 * 
 * @author fzl
 * @Dare 2020-11-22 16:27:25
 * @Description
 *
 */
public class kehuduan2 {
public static void main(String[] args) throws IOException {
	/*
	 * 接收服务器返回的值,如果正确就继续输密码
	 */

	ServerSocket serverSocket = new ServerSocket(2222);
	Socket socket_receive = serverSocket.accept();
	InetAddress address = socket_receive.getInetAddress();
	address.getHostName();
	InputStream inputStream = socket_receive.getInputStream();
	byte[] byt = new byte[1024];
	int len = inputStream.read(byt);
	String recieve_return = new String(byt,0,len);
	System.out.println(address+"---->"+recieve_return);
	serverSocket.close();
	socket_receive.close();
	inputStream.close();
	
	
	if("用户名输入正确 请输入密码".equals(recieve_return)) {
		Socket socket_sendpsd = new Socket(InetAddress.getByName(String 服务器IP),3333);
		OutputStream outputStream_sendpsd = socket_sendpsd.getOutputStream();
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入您密码");
		String passwordString =sc.next() ;
		outputStream_sendpsd.write(passwordString.getBytes());
		socket_sendpsd.close();
	}
}
}

package Login;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
/**
 * 
 * @author fzl
 * @Dare 2020-11-22 16:27:02
 * @Description
 *
 */
public class fuwuqi2 {
public static void main(String[] args) throws IOException {
	/*
	 * 再次接收客户端发回的密码 如果密码正确 发回客户端 密码正确登陆成功 字样
	 * 如果密码错误发回客户端 密码错误登陆失败字样
	 */
	String username = "fzl";
	String password = "123";
	ServerSocket serverSocket_receivepsd = new ServerSocket(3333);
	Socket socket_receivepsd = serverSocket_receivepsd.accept();
	InetAddress address = socket_receivepsd.getInetAddress();
	address.getHostName();
	InputStream inputStream_receivepsd = socket_receivepsd.getInputStream();
	byte[] byt_receivepsd = new byte[1024];
	int len_receivepsd = inputStream_receivepsd.read(byt_receivepsd);
	String password_receive = new String(byt_receivepsd,0,len_receivepsd);
	System.out.println(address+"---->"+password_receive);
	serverSocket_receivepsd.close();
	socket_receivepsd.close();
	inputStream_receivepsd.close();
	/*
	 * 将结果发送回客户端
	 */
	if(password_receive.equals(password)) {
		Socket socket_return_denglujieguo =new Socket(InetAddress.getByName(String 客户端IP),4444);
		OutputStream outputStream_denglujieguo = socket_return_denglujieguo.getOutputStream();
		String string_return_denglujieguo = "密码正确 登陆成功";
		outputStream_denglujieguo.write(string_return_denglujieguo.getBytes());
		socket_return_denglujieguo.close();
		outputStream_denglujieguo.close();
	}else {
		Socket socket_return_denglujieguo =new Socket(InetAddress.getByName(String 客户端IP),4444);
		OutputStream outputStream_denglujieguo = socket_return_denglujieguo.getOutputStream();
		String string_return_denglujieguo = "密码错误 登陆失败";
		outputStream_denglujieguo.write(string_return_denglujieguo.getBytes());
		socket_return_denglujieguo.close();
		outputStream_denglujieguo.close();
	}
		
	
}
}

package Login;

import java.io.IOException;
import java.io.InputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
/**
 * 
 * @author fzl
 * @Dare 2020-11-22 16:27:33
 * @Description
 *
 */
public class kuhuduan3 {
public static void main(String[] args) throws IOException {
	/*
	 * 客户端接收服务器端发回的结果
	 */
	ServerSocket serverSocket_receive_jieguo = new ServerSocket(4444);
	Socket socket_receive_jieguo = serverSocket_receive_jieguo.accept();
	InetAddress address = socket_receive_jieguo.getInetAddress();
	address.getHostName();
	InputStream inputStream_jieguo = socket_receive_jieguo.getInputStream();
	byte[] byt_jieguo = new byte[1024];
	int len_jieguo = inputStream_jieguo.read(byt_jieguo);
	String recieve_return_jieguo = new String(byt_jieguo,0,len_jieguo);
	System.out.println(address+"---->"+recieve_return_jieguo);
	
	serverSocket_receive_jieguo.close();
	socket_receive_jieguo.close();
	inputStream_jieguo.close();
	
}
}

package Login;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import java.nio.channels.InterruptedByTimeoutException;
import java.util.Scanner;
/**
 * 
 * @author fzl
 * @Dare 2020-11-22 14:42:00
 * @Description
 *
 */
public class kehuduan {
public static void main(String[] args) throws UnknownHostException, IOException {
	Socket socket = new Socket(InetAddress.getByName(String 服务器IP),1111);
	OutputStream outputStream = socket.getOutputStream();
	InetAddress address = socket.getInetAddress();
	address.getHostName();
	/*
	 * 向服务器端发送用户输入的用户名
	 */
	Scanner sc = new Scanner(System.in);
	System.out.println("请输入您的用户名");
	String usernameString = sc.next();
	outputStream.write(usernameString.getBytes());
	socket.close();

}
}

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yui方木

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值