实现登陆与注册 功能。
客户端与服务端连接的时候,就要提示客户端请选择功能。
客户端注册的时候,用户名与密码都是发送给服务端 的,服务端需要把数据保存到服务端的文件上。
登陆: 登陆的时候客户端输入用户名与密码发送给服务端,服务端需要校验,返回结果给客户端。
IO、线程、网络、修饰
客户端代码:
public class TestAll_client {
public static void main(String[] args) throws IOException {
Socket socket = new Socket(InetAddress.getLocalHost(),9090);
BufferedWriter sockWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
BufferedReader sockReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
while (true){
System.out.println("请选择功能:登录A,注册B,退出C ");
String option = bufferedReader.readLine();
if ("A".equalsIgnoreCase(option)){
//登录,,,
getInfo(sockWriter, sockReader, bufferedReader, option);
}
else if ("B".equalsIgnoreCase(option)){
//注册,,,
getInfo(sockWriter,sockReader,bufferedReader,option);
}
else {
break;
}
}
}
public static void getInfo(BufferedWriter sockWriter, BufferedReader sockReader, BufferedReader bufferedReader, String option) throws IOException {
System.out.println("请输入用户名:");
String userName = bufferedReader.readLine();
System.out.println("请输入密码:");
String userpassword =bufferedReader.readLine();
String info = option+" "+userName+" "+userpassword+"\r\n";
sockWriter.write(info);
sockWriter.flush();
String str =null;
str = sockReader.readLine();
System.out.println(str);
}
}
服务器端代码:
ublic class TestAll_sever extends Thread {
static File file = new File("C:\\Users\\22847\\Desktop\\TestProperties.txt");
{
if (!file.exists()){
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Socket socket;
public TestAll_sever(Socket socket ) {
this.socket=socket;
}
public void run() {
while (true) {
try {
BufferedReader socekReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedWriter sockwriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
String[] user = socekReader.readLine().split(" ");
String option = user[0];
String userName = user[1];
String userPassword = user[2];
if ("A".equalsIgnoreCase(option)) {
//登录,,,
Properties properties = new Properties();
properties.load(new FileInputStream(file));
if (properties.containsKey(userName)) {
if (userPassword.equals(properties.getProperty(userName))) {
sockwriter.write("登录成功,,,\r\n");
} else {
sockwriter.write("密码错误,,,\r\n");
}
} else {
sockwriter.write("用户名不存在,,,\r\n");
}
sockwriter.flush();
} else if ("B".equalsIgnoreCase(option)) {
//注册,,,
Properties properties = new Properties();
properties.load(new FileInputStream(file));
if (!properties.containsKey(userName)) {
properties.setProperty(userName, userPassword);
properties.store(new FileOutputStream(file), "TCP");
sockwriter.write("注册成功,,\r\n");
} else {
sockwriter.write("用户名已经存在,,\r\n");
}
sockwriter.flush();
}
} catch (Exception e) {
System.out.println("ddd");
}
}
}
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(9090);
while (true) {
Socket socket = serverSocket.accept();
new TestAll_sever(socket).start();
}
}
}