⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smtp_telnetuserregister.java

📁 用java实现的邮件服务器(Server 文件夹 用户名 文件夹 Send receive 文件夹 文件 时间.txt. 日志文件
💻 JAVA
字号:
package Server.SMTP;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

import Server.Server;


public class SMTP_TelnetUserRegister extends Server {
	private Socket socket;
	private Map<String, String> map = new HashMap<String, String>();
	//普通初始化块,在实例化对象之前加载用户信息表
	{
		setHashMap();
	}

	public SMTP_TelnetUserRegister(Socket socket) {

		this.socket = socket;
	}
	//初始化用户信息表
	public void setHashMap() {
		FileInputStream fis = null;
		try {
			fis = new FileInputStream(SMTP_Final.userInfo);
			Properties prop = new Properties();
			prop.load(fis);
			Enumeration enumer = prop.propertyNames();
			while (enumer.hasMoreElements()) {
				String username = (String) enumer.nextElement();
				String password = prop.getProperty(username);
				map.put(username, password);
			}
		} catch (FileNotFoundException e) {

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

			e.printStackTrace();
		}
	}

	//检查用户名是否已经存在,存在返回true
	public boolean checkUsernameOfvalid(String username) {
		boolean flag = false;
		if (map.containsKey(username)) {
			flag = true;
		}
		return flag;
	}
	

	public void registerNewUser() {
		FileOutputStream fos = null;
		PrintWriter pwfile = null;
		try {
			BufferedReader br = new BufferedReader(new InputStreamReader(socket
					.getInputStream()));
			PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket
					.getOutputStream()), true);
			pw.println("请输入您的用户名:");
			String username = br.readLine();
			//检测用户名是否已被占用
			if(checkUsernameOfvalid(username)){
				pw.println("对不起!您输入的用户名已被注册,请更换您的想要注册用户名!");
				pw.println();
				registerNewUser();
			}
			pw.println("请输入您的密码:");
			String password = br.readLine();
			pw.println("请再次输入您的密码:");
			String passwordAgain = br.readLine();
			// 判断用户两次输入的密码是否一致,不一致强行退出,并提醒用户再次登陆
			if (password.equals(passwordAgain)) {
				// 向userInfo文件中写入新的用户信息
				fos = new FileOutputStream(SMTP_Final.userInfo, true);
				pwfile = new PrintWriter(new OutputStreamWriter(fos), true);
				pwfile.println();
				pwfile.print(username + "=" + password);
				pwfile.flush();
				// 为新注册的用户分配一个邮箱
				SMTP_CreateUserDir mkdir=new SMTP_CreateUserDir(username);
				mkdir.start();
				mkdir.join();
				pw.println();
				pw.println("注册新用户成功!");
				pw.println("您的用户名是:"+ username);
				pw.println("您的密码是:"+ password);
				pw.println("请牢记你的密码!");
				pw.println();
			} else {
				pw.println();
				pw.println("两次输入的密码不一致,请重新输入!");
				pw.println();
				registerNewUser();
			}

		} catch (IOException e) {

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

	}
	//通过线程启动该类的一个实例化对象
	public void run() {
		registerNewUser();
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -