/*
客户端通过键盘录入用户名
服务端对这个用户名进行验证
如果用户名存在,在服务端显示 xxx,已登录
并在客户端显示,xxx,欢迎光临
如果该用户不存在,在服务端显示 xxx,尝试登录
并在客户端显示 xxx,该用户不存在
最多登陆三次
*/
import java.io.*;
import java.net.*;
class UserThread implements Runnable {
private Socket s;
UserThread(Socket s) {
this.s = s;
}
public void run() {
try {
InputStream in = s.getInputStream();
OutputStream out = s.getOutputStream();
BufferedReader skBufr = new BufferedReader(new InputStreamReader(in));
BufferedReader bufr = new BufferedReader(new FileReader("users.txt"));
PrintWriter pw = new PrintWriter(out, true);
for(int i = 0; i < 3; i ++) {
String name = skBufr.readLine();
String user = null;
boolean exist = false;
while((user = bufr.readLine()) != null) {
if(user.equals(name)) {
exist = true;
break;
}
}
if(exist == true) {
System.out.println(name + ", 已登录");
pw.println(name + "欢迎光临");
break;
}
else {
System.out.println("....尝试登录中");
pw.println("用户名不存在");
}
}
s.close();
} catch(Exception e) {
throw new RuntimeException("校验失败");
}
}
}
class LoginClient { //客户端
public static void main(String[] args) throws Exception {
Socket s = new Socket("172.16.41.154", 10008);
InputStream in = s.getInputStream();
OutputStream out = s.getOutputStream();
PrintWriter pw = new PrintWriter(out, true);
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
BufferedReader skBufr = new BufferedReader(new InputStreamReader(in));
String line = null;
for(int i = 0; i < 3; i ++) {
line = bufr.readLine();
if(line == null)
break;
pw.println(line);
String info = skBufr.readLine();
System.out.println("...." + info);
if(info.contains("欢迎"))
break;
}
bufr.close();
s.close();
}
}
class LoginServer { //服务器端
public static void main(String[] args) throws Exception {
ServerSocket ss = new ServerSocket(10008);
while(true) {
Socket s = ss.accept();
new Thread(new UserThread(s)).start();
}
}
}
TCP--客户端简单登录
最新推荐文章于 2022-04-12 19:26:41 发布