import javax.xml.ws.Service;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.file.attribute.UserPrincipalLookupService;
/*
客户端通过键盘录入用户名。服务端对这个用户名进行校验
如果该用户存在,在服务端显示xxx,已登录。并在客户端显示xxx,欢迎光临。
如果该用户存在,在服务端显示xxx,尝试登录。并在客户端显示xxx,该用户不存在
最多就登录三次
*/
class LoginClient
{
public static void main(String[] args) throws Exception
{
Socket s = new Socket("192.168.1.13",1005);
// 读取键盘录入
BufferedReader bfr =
new BufferedReader(new InputStreamReader(System.in));
// 客户端写出数据
PrintWriter out = new PrintWriter(s.getOutputStream(),true);
// BufferedWriter bfrout =
// new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
// 读取服务端返回来的数据
BufferedReader bfrin = new BufferedReader(new InputStreamReader(s.getInputStream()));
for (int i = 0; i <3 ; i++)
{
String line = bfr.readLine();
// 键盘录入按Ctrl+c
if (line==null)
break;
System.out.println(line);
out.write(line);
String info = bfrin.readLine();
// 服务端说啥
System.out.println("info"+info);
// 已经登录的用户
if (info.contains("欢迎"))
break;
}
bfr.close();
s.close();
}
}
class User implements Runnable
{
private Socket s;
User(Socket s)
{
this.s = s;
}
@Override
public void run()
{
String ip = s.getInetAddress().getHostAddress();
System.out.println(ip+"....connected");
try
{
for (int i = 0; i < 3; i++)
{
BufferedReader bfrin =
new BufferedReader(new InputStreamReader(s.getInputStream()));
String name = bfrin.readLine();
if(name ==null)
break;
BufferedReader bfr =
new BufferedReader(new FileReader("user.txt"));
PrintWriter out = new PrintWriter(s.getOutputStream(),true);
// BufferedWriter bfrout =
// new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
Boolean flag = false;
String line = null;
while ((line = bfr.readLine())!=null)
{
if (line.equals(name))
{
flag = true;
}
if (flag=true)
{
System.out.println(name+",已登录。");
out.print(name+",欢迎光临。");
// 三次循环
break;
}
else
{
System.out.println(name+",尝试登录");
out.print(name+",用户名不存在");
}
}
s.close();
}
} catch (Exception e)
{
throw new RuntimeException(ip+"校验失败");
}
}
}
class LoginService
{
public static void main(String[] args) throws Exception
{
ServerSocket ss = new ServerSocket(1005);
while (true)
{
Socket s= ss.accept();
new Thread(new User(s)).start();
}
}
}
网友评论