/*
需求:
客户端通过键盘录入用户名。
服务端对这个用户名进行校验。
如果该用户存在,在服务端显示 xxx,已登陆
并在客户端显示 xxx,欢迎光临
如果该用户不存在,在服务显示 xxx,尝试登陆
并在客户端显示 xxx,该用户不存在。
最多登陆三次。
*/
import java.io.*;
import java.net.*;
class LoginClient
{
public static void main(String[] args) throws Exception
{
Socket s = new Socket("192.168.1.100",10011);
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufwOut = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
BufferedReader bufrIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
String line=null;
for(int x=0;x<3;x++)
{
line = bufr.readLine();
if(line==null)//当客户端输入ctrl+c组合键时
break;
bufwOut.write(line);
bufwOut.newLine();
bufwOut.flush();
String info=bufrIn.readLine();
System.out.println("info:"+info);
if(info.contains("欢迎"))//如果登陆成功,就不再读取键盘录入
break;
}
bufr.close();
s.close();
}
}
class LoginServer
{
public static void main(String[] args) throws Exception
{
ServerSocket ss = new ServerSocket(10011);
while(true)
{
Socket s = ss.accept();
new Thread(new UserLogin(s)).start();
}
}
}
class UserLogin implements Runnable
{
private Socket s;
UserLogin(Socket s)
{
this.s=s;
}
public void run()
{
String ip = s.getInetAddress().getHostAddress();
System.out.println(ip+"...connected");
try
{
BufferedReader bufrIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter out = new PrintWriter(s.getOutputStream(),true);
for(int x=0;x<3;x++)
{
BufferedReader bufr = new BufferedReader(new FileReader("sql.txt"));//该文件流要放在循环里面,
String line = bufrIn.readLine();
if(line==null)//当客户端输入ctrl+c组合键时
break;
String name = null;
boolean flag=false;
while((name=bufr.readLine())!=null)//第一次读取键盘录入时,文件已读到了末尾
//放在循环里面的文件流,就能保证文件重新从第一行读,所以第二、三次读取键盘录入
{
if(name.equals(line))
{
flag=true;
break;
}
}
if(flag==true)
{
System.out.println(line+",已登陆");
out.println(line+",欢迎光临");
bufr.close();
break;
}
else
{
System.out.println(line+",尝试登陆");
out.println(line+",该用户不存在");
}
bufr.close();
}
s.close();
}
catch (Exception e)
{
throw new RuntimeException("检验失败");
}
}
}
day24/TcpUserLogin.java
最新推荐文章于 2021-05-07 22:39:30 发布