Java 实例 – ServerSocket 和 Socket 通信实例

前言

在计算机领域,Socket 是一种通信机制,是在应用层和传输层之间的一组接口。它提供了一种通用的接口,使得应用程序可以利用底层的 TCP/IP 协议栈进行网络通信。在 Java 中,我们可以使用 ServerSocket 和 Socket 类来实现网络通信,本文将介绍如何使用这两个类来创建一个简单的客户端-服务器应用程序。

ServerSocket 类

ServerSocket 是一个在服务器端使用的类,它用于监听客户端的连接请求并创建 Socket 对象。下面是一个简单的 ServerSocket 示例:

ServerSocket serverSocket = new ServerSocket(8080);
Socket socket = serverSocket.accept();

上面的代码创建了一个 ServerSocket 对象并将其绑定到本地机器的 8080 端口。然后,它调用 accept() 方法来等待客户端的连接请求,并返回一个 Socket 对象,该对象表示与客户端建立的连接。

Socket 类

Socket 类用于在客户端与服务器之间建立连接。下面是一个简单的 Socket 示例:

Socket socket = new Socket("localhost", 8080);

上面的代码创建了一个 Socket 对象并将其连接到本地机器上的 8080 端口。这个示例演示了如何使用 Socket 类来连接到一个正在运行的服务器。

示例代码

下面是一个简单的客户端-服务器应用程序,它使用了 ServerSocket 和 Socket 类来实现网络通信:

服务器端代码

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

public class Server {
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(8080);
        System.out.println("Server started on port 8080");

        while (true) {
            Socket socket = serverSocket.accept();
            System.out.println("New client connected");

            Thread thread = new Thread(new ClientHandler(socket));
            thread.start();
        }
    }
}

上面的代码创建了一个 ServerSocket 对象并将其绑定到本地机器的 8080 端口。然后,它使用一个无限循环来等待客户端的连接请求。每当有一个新的客户端连接到服务器时,它会创建一个新的线程来处理客户端的请求。

客户端代码

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

public class Client {
    public static void main(String[] args) throws IOException {
        Socket socket = new Socket("localhost", 8080);
        System.out.println("Connected to server");

        BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        PrintWriter writer = new PrintWriter(socket.getOutputStream(), true);

        writer.println("Hello, server!");

        String response = reader.readLine();
        System.out.println("Server response: " + response);

        socket.close();
    }
}

上面的代码创建了一个 Socket 对象并将其连接到本地机器上的 8080 端口。然后,它使用 BufferedReader 和 PrintWriter 对象来读取和写入数据。最后,它关闭了 Socket 对象。

结论

在本文中,我们介绍了如何使用 ServerSocket 和 Socket 类来实现一个简单的客户端-服务器应用程序。使用这些类,我们可以轻松地实现网络通信,从而实现分布式应用程序的开发。希望本文对您有所帮助。

本文来源:词雅网

本文地址:https://www.ciyawang.com/uo723i.html

本文使用「 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 」许可协议授权,转载或使用请署名并注明出处。

相关推荐