Java ServerSocket

简介

在进行网络编程时,ServerSocket 是一个非常重要的类。它允许我们在 Java 语言中创建一个服务器,并监听来自客户端的连接请求。一旦连接建立,服务器可以与客户端进行通信,发送和接收数据。

代码示例

下面是一个简单的示例,展示了如何使用 ServerSocket 在 Java 中创建一个简单的服务器:

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class MyServer {

    public static void main(String[] args) {
        try {
            // 创建 ServerSocket 对象,指定服务器端口号
            ServerSocket serverSocket = new ServerSocket(8080);

            System.out.println("服务器已启动,等待客户端连接...");

            // 监听来自客户端的连接请求
            Socket clientSocket = serverSocket.accept();

            System.out.println("客户端已连接,IP 地址:" + clientSocket.getInetAddress());

            // 在此处进行与客户端的通信

            // 关闭连接
            clientSocket.close();
            serverSocket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

解析

让我们逐行解析一下上述代码示例:

  1. 首先,我们导入了 java.io.IOExceptionjava.net 下的 ServerSocketSocket 类。这些类提供了我们在网络编程中所需的功能。
  2. 接下来,我们创建了一个名为 MyServer 的类,并在其中编写了 main 方法。
  3. main 方法中,我们使用 ServerSocket 类的构造函数创建了一个 serverSocket 对象,并指定服务器端口号为 8080。这样,服务器就会监听 8080 端口上的连接请求。
  4. 然后,我们使用 System.out.println 方法输出一条消息,表示服务器已启动并正在等待客户端连接。
  5. 接着,我们调用 accept 方法等待来自客户端的连接请求。该方法会阻塞程序执行,直到有客户端连接成功。
  6. 一旦有客户端连接成功,我们使用 getInetAddress 方法获取客户端的 IP 地址,并输出到控制台。
  7. 在此处,我们可以进行与客户端的通信。根据实际需求,可以使用 clientSocket 对象的输入输出流进行数据的发送和接收。
  8. 最后,我们关闭了客户端连接和服务器的 serverSocket

关于 ServerSocket

ServerSocket 类是 Java 中用于创建服务器的关键类之一。它提供了许多方法,用于创建服务器和处理客户端连接请求。

以下是一些常用的 ServerSocket 方法:

方法名 描述
accept() 接受客户端连接请求,并返回一个 Socket 对象,用于与客户端进行通信。该方法会阻塞程序执行,直到有客户端连接成功。
close() 关闭 ServerSocket 对象及其关联的所有 Socket 对象。
getInetAddress() 获取本地主机的 IP 地址。
getLocalPort() 获取服务器监听的本地端口号。
isBound() 检查 ServerSocket 是否已绑定到特定的 IP 地址和端口号。
isClosed() 检查 ServerSocket 是否已关闭。
setSoTimeout(int timeout) 设置在调用 accept() 方法时的超时时间,以毫秒为单位。

结论

通过使用 Java 的 ServerSocket 类,我们可以轻松地创建一个服务器,并与客户端进行通信。本文介绍了 ServerSocket 类的基本用法,并提供了一个简单的代码示例。希望这篇文章对你理解和使用 ServerSocket 有所帮助。

参考资料:

  • [Oracle Java Documentation - ServerSocket](