📄 smtp_telnetuserregister.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 + -