您的位置:首页 > 理论基础 > 计算机网络

网络编程(TCP-客户端并发登录)

2016-01-21 20:40 549 查看
package netTest;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class LoginServer {

public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
ServerSocket ss = new ServerSocket(10003);
// 或取多个客户端需要用到线程
while(true){
Socket s = ss.accept();
new Thread(new  UserThread(s)).start();
}
}

}
class UserThread implements Runnable {
private Socket s;
UserThread(Socket s){
this.s = s;
}
@Override
public void run() {
// TODO Auto-generated method stub
try{
for(int x = 0;x<3;x++){
BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
String name = bufIn.readLine();
if(name == null){
break;
}
BufferedReader bufr = new BufferedReader(new FileReader("user.txt"));
PrintWriter out = new PrintWriter(s.getOutputStream(),true);
String line = null;
boolean flag = false;
while((line = bufr.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){
e.printStackTrace();
}
}

}

package netTest;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;

/*
* 只能校验三次。
*
*/
public class LoginClient {
public static void main(String[] args) throws Exception, Exception {
// TODO Auto-generated method stub
//1.建立端点
Socket s = new Socket(InetAddress.getLocalHost(), 10003);
//2.组织数据(先写输入输出流 )
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:"+info);
if(info.contains("欢迎")){
break;
}

}
bufr.close();
s.close();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: