欢迎访问宙启技术站
智能推送

使用Java中的Socket函数实现网络连接和通信。

发布时间:2023-07-04 17:24:07

在Java中,可以使用Socket类来实现网络连接和通信。Socket类提供了一组接口,可以让我们创建网络连接并进行数据的发送和接收。下面是一个使用Socket类进行网络连接和通信的示例。

首先,我们需要创建一个服务器端和一个客户端。服务器端负责监听客户端的连接请求,而客户端负责向服务器端发送请求并接收服务器端的响应。

服务器端代码如下:

import java.io.*;
import java.net.*;

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

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

                // 创建BufferedReader对象,用于读取客户端发送的消息
                BufferedReader reader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
                // 创建PrintWriter对象,用于向客户端发送消息
                PrintWriter writer = new PrintWriter(clientSocket.getOutputStream(), true);

                // 读取客户端发送的消息
                String message = reader.readLine();
                System.out.println("Received message from client: " + message);

                // 向客户端发送响应消息
                writer.println("Hello, client!");

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

客户端代码如下:

import java.io.*;
import java.net.*;

public class Client {
    public static void main(String[] args) {
        try {
            // 创建Socket对象,指定服务器的IP地址和端口号
            Socket socket = new Socket("localhost", 8888);

            // 创建BufferedReader对象,用于读取服务器发送的消息
            BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            // 创建PrintWriter对象,用于向服务器发送消息
            PrintWriter writer = new PrintWriter(socket.getOutputStream(), true);

            // 向服务器发送消息
            writer.println("Hello, server!");

            // 读取服务器发送的响应消息
            String message = reader.readLine();
            System.out.println("Received message from server: " + message);

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

在服务器端代码中,我们首先创建了一个ServerSocket对象,并指定了要监听的端口号。然后通过一个无限循环来不断监听客户端的连接请求。当有客户端连接成功后,我们创建了一个BufferedReader对象用于读取客户端发送的消息,创建了一个PrintWriter对象用于向客户端发送响应消息。接着,我们读取了客户端发送的消息,并将其打印到控制台上。然后向客户端发送了一条响应消息。最后,关闭了与客户端的连接。

在客户端代码中,我们创建了一个Socket对象,并指定了服务器的IP地址和端口号。然后创建了一个BufferedReader对象用于读取服务器发送的消息,创建了一个PrintWriter对象用于向服务器发送消息。接着,我们向服务器发送了一条消息,并读取了服务器的响应消息并将其打印到控制台上。最后,关闭了与服务器的连接。

以上代码实现了基本的网络通信功能。你可以根据实际需求进行修改和扩展,例如添加多线程支持来实现同时处理多个客户端的连接请求等。