美文网首页
2021-10-09 网络编程(TCP-客户端并发登录)

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

作者: Denholm | 来源:发表于2021-11-03 19:37 被阅读0次

客户端通过键盘录入用户名,服务端对这个用户名进行校验。

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

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

最多登录三次。

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class LoginClient {

    public static void main(String[] args) throws Exception {
        Socket socket = new Socket("192.168.1.6", 10008);
        BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
        PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
        BufferedReader bufIn = new BufferedReader(new InputStreamReader(socket.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();
        socket.close();
    }

}
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class UserThread implements Runnable {

    private Socket socket;

    public UserThread(Socket socket) {
        this.socket = socket;
    }

    @Override
    public void run() {
        String ip = socket.getInetAddress().getHostAddress();
        try {
            for (int i = 0; i < 3; i++) {
                BufferedReader bufIn = new BufferedReader(
                        new InputStreamReader(socket.getInputStream()));
                String name = bufIn.readLine();
                if (name == null) {
                    break;
                }
                BufferedReader bufr = new BufferedReader(new FileReader("E:\\user.txt"));
                PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
                String line;
                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 + "用户名不存在");
                }
            }
            socket.close();
        } catch (Exception e) {
            throw new RuntimeException(ip + "校验失败");
        }
    }

}
import java.net.ServerSocket;
import java.net.Socket;

public class LoginServer {

    public static void main(String[] args) throws Exception {
        ServerSocket server = new ServerSocket(10008);
        Socket accept = server.accept();
        new Thread(new UserThread(accept)).start();
    }

}

相关文章

网友评论

      本文标题:2021-10-09 网络编程(TCP-客户端并发登录)

      本文链接:https://www.haomeiwen.com/subject/tfkcoltx.html