//LoginClient.java
package mySocket;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
/**
*client通过键盘录入username
*服务端对这个username进行校验。
*
*假设该用户存在,在服务端显示xxx,已登录。
*并在client显示xxx,欢迎光临。
* *假设该用户存在,在服务端显示xxx。尝试登陆。 *并在client显示xxx,该用户不存在。 * *最多登陆3次。 */ public class LoginClient { public static void main(String[] args) throws Exception { Socket s = new Socket("192.168.1.103",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); if(info.contains("欢迎")) break; } bufr.close(); s.close(); } }
//LoginServer.java
package mySocket;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
class LoginThread implements Runnable {
private Socket s;
public LoginThread(Socket s) {
this.s = s;
}
public void run() {
//获取连接的ip
String ip = s.getInetAddress().getHostAddress();
System.out.println(ip+"已被连接");
try {
for(int x=0;x<3;x++) {
BufferedReader bufIn =
new BufferedReader(new InputStreamReader(s.getInputStream()));
//读取client发来的数据
String name = bufIn.readLine();
if(name==null)
break;
//读取user.txt里的数据
BufferedReader bufr =
new BufferedReader(new FileReader("user.txt"));
String line = null;
boolean flag = false;
while((line=bufr.readLine())!=null) {
if(line.equals(name)) {
flag = true;
break;
}
}
PrintStream out = new PrintStream(s.getOutputStream(),true);
if(flag) {
System.out.println(name+"已登录");
out.println(name+"欢迎光临");
break;
}
else{
System.out.println(name+"尝试登陆");
out.println(name+"username不存在");
}
s.close();
}
} catch (Exception e) {
throw new RuntimeException(ip+"校验失败");
}
}
}
public class LoginServer {
public static void main(String[] args) throws Exception {
ServerSocket ss = new ServerSocket(10008);
while(true) {
Socket s = ss.accept();
new Thread(new LoginThread(s)).start();
}
}
}
//学习自毕向东老师培训视频