Jiahonzheng's Blog

Java 实现简易 Socket 服务

字数统计: 398阅读时长: 1 min
2018/09/05 Share

实现思路

由于篇幅限制,下面的示例代码并没有使用 try {} catch {} finally {} 语法结构,在实际编写程序需要注意。

Socket 服务端

  1. 创建ServerSocket对象,绑定监听端口

    1
    2
    // 创建一个服务器端Socket,并绑定在本机上的4000端口
    ServerSocket serverSocket = new ServerSocket(4000);
  2. 通过accept()方法监听客户端请求

    1
    2
    // 调用accept()方法监听,等待客户端请求,为阻塞
    Socket socket = serverSocket.accept();
  3. 连接建立后,通过输入流读取客户端发送的请求信息

    1
    2
    3
    4
    5
    // 建立输入流
    DataInputStream is = new DataInputStream(serverSocket.getInputStream());

    // 读取客户端信息
    String request = is.readUTF();
  4. 通过输出流向客户端发送响应信息

    1
    2
    3
    4
    5
    // 建立输出流
    DataOutputStream os = new DataOutputStream(serverSocket.getOutputStream());

    // 发送响应信息
    os.writeUTF("Response");
  5. 关闭相关资源

    1
    2
    3
    // 关闭输入与输出流
    close(os);
    close(is);

Socket 客户端

  1. 创建Socket对象,指名需要连接的服务器的地址和端口号

    1
    Socket socket = new Socket("localhost", 4000);
  2. 连接建立后,通过输出流向服务器端发送请求信息

    1
    2
    3
    4
    5
    // 建立输出流
    DataOutputStream os = new DataOutputStream(socket.getOutputStream());

    // 发送请求信息
    os.writeUTF("request");
  3. 通过输入流获取服务器响应的信息

    1
    2
    3
    4
    5
    // 建立输入流
    DataInputStream is = new DataInputStream(socket.getInputStream());

    // 获取响应信息
    String response = is.readUTF();
  4. 关闭相关资源

    1
    2
    3
    // 关闭输入与输出流
    close(os);
    close(is);

具体实现

在具体实现中,使用了多线程技术进行了 Socket 处理分发,从而实现多客户端的处理。

具体代码已上传至 Gist,可请点击此处查看。

CATALOG
  1. 1. 实现思路
    1. 1.1. Socket 服务端
    2. 1.2. Socket 客户端
  2. 2. 具体实现