正常输入三次就结束,或者输入对了,txt中存入了信息,就是输入什么都不好用,程序也不会结束呢????
、客户端通过键盘录入用户名
服务端对这个用户名进行校验
如果该用户存在,在服务端显示xxx 已登录
并在客户端显示 xxx 欢迎光临
如果该用户不存在,在服务端显示xxx 尝试登陆
并在客户端显示xxx 该用户不存在
最多三次。
public class LoginClient
{
public static void main(String[] args)throws Exception
{
Socket s= new Socket("192.168.0.105",10027);
BufferedReader bfr =
new BufferedReader(new InputStreamReader(System.in));
PrintWriter out =new PrintWriter(s.getOutputStream(),true);
BufferedReader bfrin =
new BufferedReader(new InputStreamReader(s.getInputStream()));
for (int i = 0; i < 3; i++)
{
String line =bfr.readLine();
if(line==null)
break;
out.println(line);
String info = bfrin.readLine();
System.out.println(info);
if(info.contains("欢迎"))
break;
}
bfr.close();
s.close();
}
}
package TCP2;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
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 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("f:\\1.txt"));
PrintWriter out = new PrintWriter(s.getOutputStream(),true);
String line = null;
boolean flag = false;//加个标记
while((line = bfr.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(ip+"---校验失败");
}
}
}
public class LoginServer {
public static void main(String[] args)throws Exception
{
ServerSocket ss = new ServerSocket(10027);
while(true)
{
Socket s =ss.accept();
new Thread(new UserThread(s)).start();
}
}
}
|
|