Socket实现客户端和服务端

客户端

public class Client {
    public static void main(String[] args) {
        // 服务端地址和端口
        final String DEFAULT_SERVER_HOST = "127.0.0.1";
        final Integer DEFAULT_SERVER_PORT = 8888;
        Socket socket = null;
        try {
            // 创建socket
            socket = new Socket(DEFAULT_SERVER_HOST, DEFAULT_SERVER_PORT);
            // 接收消息
            BufferedReader buffReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            // 发送消息
            BufferedWriter buffWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
            String msg = null;
            // 获取用户输入的消息
            BufferedReader userReader = new BufferedReader(new InputStreamReader(System.in));
            while (true) {
                String input = userReader.readLine();
                // 写入客户端要发送的消息。因为服务端用readLine获取消息,其以\n为终点,所以要在消息最后加上\n
                buffWriter.write(input + "\n");
                // 刷新缓存
                buffWriter.flush();
                // 读取服务端信息
                msg = buffReader.readLine();
                System.out.println(msg);
                // 如果客户端输入quit就可以跳出循环、断开连接了
                if (input.equals("quit")) {
                    break;
                }
            }
            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

服务端

public class Server {
    public static void main(String[] args) {
        // 监听8888端口
        final int DEFAULT_PORT = 8888;
        ServerSocket serverSocket = null;
        try {
            serverSocket = new ServerSocket(DEFAULT_PORT);
            while (true) {
                // 阻塞监听
                Socket socket = serverSocket.accept();
                System.out.println("Client[" + socket.getPort() + "]Online");
                // 读取消息
                BufferedReader buffReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                // 发送消息
                BufferedWriter buffWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
                String msg = null;
                while ((msg = buffReader.readLine()) != null) {
                    System.out.println("Client[" + socket.getPort() + "]:" + msg);
                    // 写入服务端要发送的消息
                    buffWriter.write("Server:" + msg + "\n");
                    buffWriter.flush();
                    if (msg.equals("quit")) {
                        System.out.println("Client[" + socket.getPort() + "]:Offline");
                        break;
                    }
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

posted @ 2022-05-18 13:59  方大帝的博客  阅读(142)  评论(0编辑  收藏  举报