/*
* 需求:
* 客户端通过键盘录入用户名
* 服务端对这个用户名进行校验
*
* 如果该用户存在,在服务端显示xxx,已登录
* 并在客户端显示xxx ,欢迎光临
*
* 如果该用户不存在,在服务端显示xxx,尝试登陆
* 并在客户端显示xxx,该用户不存在。
* 最多登陆三次
* */
import java.io.*;
import java.net.*;
class LoginClient {
public static void main(String[] args)throws Exception{
Socket s = new Socket("127.0.0.1",10008);
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
PrintWriter out = new PrintWriter(s.getOutputStream(),true);
BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
for(int x=0; x<3; x++){
String line = bufr.readLine();
if(line==null)
break;
out.println(line);
String info = bufIn.readLine();
System.out.println("info:"+info);
if(info.contains("欢迎"))
break;
}
bufr.close();
s.close();
}
}
class UserThread implements Runnable{
private Socket s;
UserThread(Socket s){
this.s = s;
}
public void run(){
String ip = s.getInetAddress().getHostAddress();
System.out.println(ip+".....connected");
try{
for(int x=0;x<3;x++){
BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
String name = bufIn.readLine();
if(name==null)
break;
BufferedReader bufr = new BufferedReader(new FileReader("h:\\javacode\\user.txt"));
String line = null;
PrintWriter out = new PrintWriter(s.getOutputStream(),true);
boolean flag = false;
while((line=bufr.readLine())!=null){
if(line.equals(name)){
flag = true;
break;
}
}
if(flag){
System.out.println(name+",已登录");
out.println(name+",欢迎光临");
break;
}
else{
System.out.println(name+",尝试登陆");
out.println(name+",用户名不存在");
}
}
s.close();
}catch(Exception e){
throw new RuntimeException("校验失败");
}
}
}
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客户端登陆小例子
最新推荐文章于 2023-05-19 16:08:42 发布