看毕老师视频练个手
import java.io.*;
import java.net.*;
class LoginClient
{
public static void main(String[] agrs) throws Exception
{
Socket s = new Socket(“192.168.0.101”,10003);
/读取键盘录入,获得输出流/
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 str = bufin.readLine();
System.out.println(str);
if(str.contains("欢迎"))
break;
}
/*输入3次以后将客户端输出流关闭*/
bufr.close();
s.close();
}
}
class UserThread implements Runnable
{
/只能从外部导入Socket对象/
private Socket s;
UserThread(Socket s)
{
this.s = s;
}
/*服务端校验3次,3次不成功就停止校验*/
public void run()
{
for(int x=0; x<3; x++)
{
String ip = s.getInetAddress().getHostAddress();
System.out.println(ip+"...connected");
try
{
BufferedReader bufr = new BufferedReader(new InputStreamReader(s.getInputStream()));
String name = bufr.readLine();
BufferedReader buffile = new BufferedReader(new FileReader("username.txt"));
PrintWriter out = new PrintWriter(s.getOutputStream(),true);
String line = null;
boolean flag = false;//定义一个标记;
while((line=buffile.readLine())!=null)
{
if(line.equals(name))
{
flag = true;
break;
}
}
if(flag)
{
System.out.println(name+",login");
out.println(name+",欢迎光临");
break; //跳出for循环;
}
else
{
System.out.println(name+",尝试登录");
out.println(name+",用户名不存在");
}
s.close();
}
catch(Exception e)
{
throw new RuntimeException("校验失败");
}
}
}
}
class Server
{
public static void main(String[] args) throws Exception
{
ServerSocket ss = new ServerSocket(10003);
/多线程,多个客户端并发登录/
while(true)
{
Socket s = ss.accept();
new Thread(new UserThread(s)).start();
}
}
}