这个程序简单来说就是客户端键盘录入用户名,然后传到服务器端,服务器端对这个用户名进行认证,认证的过程就是在自己的文本文档中查找,如果没有,则告诉客户端,我这里没有,你登陆失败了,如果有的话,则告诉客户端。你可以登陆就表示登陆成功。
客户端和服务器端是一对一的关系,是平级关系,所以说客户端和服务器端同时运行的关系,不是你运行一次我运行一次的关系,这是必须要注意的。
代码
客户端
package yanzheng;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.net.Socket;import java.net.UnknownHostException;public class Client {public static void main(String args[]) throws UnknownHostException, IOException{BufferedReader br=new BufferedReader(new InputStreamReader(System.in));Socket s=new Socket("192.168.0.1", 10006);BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));BufferedReader br1=new BufferedReader(new InputStreamReader(s.getInputStream()));String len=null;for(int i=0;i<3;i++) {String line=br.readLine();if(line==null) {break;}bw.write(line);String info=br1.readLine();if("登陆成功".equals(info)){break;//如果时我要登陆就表示登陆,那么break就没有意义了}br.close();bw.close();br1.close();s.close();}}}
服务器端代码
package yanzheng;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String args[]) throws IOException {
ServerSocket ss=new ServerSocket(100006);
while(true) {
Socket s=ss.accept();
ServerThread st=new ServerThread(s);
Thread t=new Thread(st);
t.start();
}
}
}
class ServerThread implements Runnable{
Socket s;
ServerThread(Socket s){
this.s=s;
}
public void run() {
for(int i=0;i<3;i++) {
try {
BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream()));
String name=br.readLine();//等待输入三次
if(name==null) {
break;
}
boolean flag=false;
BufferedReader br1=new BufferedReader(new FileReader("a.txt"));//a.txt中存放登陆密码
PrintStream ps=new PrintStream(s.getOutputStream());
String line=null;
while((line=br1.readLine())!=null) {
if(name.equals(line)) {//密码中有一个成立就算登陆成功
flag=true;
break;
}
if(flag) {
System.out.println("登陆成功");
ps.println("登陆成功");
}
else {
ps.println("登陆失败");
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}如果你对编程感兴趣的话,欢迎关注收藏转发。