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

网络编程--TCP客户端并发登陆

2015-12-03 12:34 597 查看
/*
客户端通过键盘录入用户名。
服务端对这个用户名进行校验。

如果该用户存在,在服务器端显示xxx,已登录。
并在客户端显示xxx,欢迎光临。

如果该用户不存在,在服务端显示xxx,尝试登录。
并在客户端显示xxx,该用户不存在。

最多就登录三次。
--自建立users.txt。
*/

//客户端
import java.io.*;
import java.net.*;
import java.util.ArrayList;
import java.util.List;

class LoginClient {
public static void main(String[] args) throws Exception {
Socket s = new Socket("192.168.1.254", 5000);

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

PrintWriter pwOut = new PrintWriter(s.getOutputStream(), true);

BufferedReader brIn = new BufferedReader(new InputStreamReader(
s.getInputStream()));

for (int i = 0; i < 3; i++) {
String line = br.readLine();

if (line == null)
break;

pwOut.println(line);

String info = brIn.readLine();
System.out.println("info" + info);
if (info.contains("欢迎"))
break;
}

br.close();
s.close();
}
}

// 服务端
class LoginServer {
public static void main(String[] args) throws Exception {
ServerSocket ss = new ServerSocket(5000);

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;
}

public void run() {

String ip = s.getInetAddress().getHostAddress();
System.out.println(ip + "......Connected");
try {
List<String> list = new ArrayList<String>();
list = readUsers();
for (int i = 0; i < 3; i++) {
BufferedReader brIn = new BufferedReader(new InputStreamReader(
s.getInputStream()));

PrintWriter pwOut = new PrintWriter(s.getOutputStream());

String name = brIn.readLine();
if(name == null)
break;

boolean flag = false;
if (list.contains(name)) {
flag = true;
break;
}

if (flag) {
System.out.println(name + ",已登录");
pwOut.println(name + ",欢迎光临");
break;
} else {
System.out.println(name + ",尝试登录");
pwOut.println(name + ",用户名不存在");
}
}
s.close();
} catch (Exception e) {
throw new RuntimeException(ip + "校验失败!");
}
}

private List<String> readUsers() throws Exception {

List<String> list = new ArrayList<String>();
BufferedReader br = new BufferedReader(new FileReader("users.txt"));

String line = null;
while ((line = br.readLine()) != null) {
list.add(line);
}
return list;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: