Skip to content

Latest commit

 

History

History
106 lines (93 loc) · 3.03 KB

20.Socket通信.md

File metadata and controls

106 lines (93 loc) · 3.03 KB

Socket编程

Socket简介

Server端:

public class Server {
  public static void main(String[] args) {
    final int DEFAULT_PORT = 8888;
    ServerSocket serverSocket = null;
    final String QUIT = "quit";

    try {
      // 1.绑定监听端口
      serverSocket = new ServerSocket(DEFAULT_PORT);
      System.out.println("启动服务器,监听端口:" + DEFAULT_PORT);

      while (true) {
        // 2.等待客户端连接
        Socket socket = serverSocket.accept();
        System.out.println("客户端:【" + socket.getPort() + "】已连接");
        // 获取客户端传来的msg
        BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        // 服务端向客户端发送msg
        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

        String msg = null;
        while ((msg = reader.readLine()) != null) {
          // 3.读取客户端发来的信息
          System.out.println("客户端:【" + socket.getPort() + "】:" + msg);
          // 4.回复客户端的消息
          writer.write("服务器:收到 " + msg + "\n");
          writer.flush();
          // 5.查看客户端发来的信息是否退出
          if (QUIT.equals(msg)) {
            System.out.println("客户端:【" + socket.getPort() + "】断开连接");
            break;
          }
        }
      }
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      if (serverSocket != null) {
        try {
          serverSocket.close();
          System.out.println("关闭ServerSocket!");
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
    }
  }
}

Client端:

public class Client {
  public static void main(String[] args) {
    final String QUIT = "quit";
    final String DEFAULT_SERVER_HOST = "127.0.0.1";
    final int DEFAULT_SERVER_PORT = 8888;
    Socket socket = null;
    BufferedWriter writer = null;

    try {
      // 1.创建Socket
      socket = new Socket(DEFAULT_SERVER_HOST, DEFAULT_SERVER_PORT);
      // 2.创建IO流
      BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
      writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

      // 3.等待用户输入
      BufferedReader consolReader = new BufferedReader(new InputStreamReader(System.in));

      while (true) {
        String input = consolReader.readLine();
        // 4.发生信息给服务器
        writer.write(input + "\n");
        writer.flush();

        // 5.读取服务器返回的信息
        String msg = reader.readLine();
        System.out.println(msg);

        // 6.查看用户是否退出
        if (QUIT.equals(input)) { break; }
      }
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      if (writer != null) {
        try {
          writer.close();
          System.out.println("关闭Socket");
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
    }
  }
}