linux

Java在Linux上的网络编程

小樊
46
2025-10-28 20:37:12
栏目: 编程语言

在Linux上进行Java网络编程,主要涉及到使用Java的网络库(如java.net包)来实现客户端和服务器之间的通信。以下是一些基本的概念和示例代码,帮助你了解如何在Linux上进行Java网络编程。

基本概念

  1. Socket:Socket是网络通信的基本组件,它允许应用程序通过网络发送和接收数据。
  2. ServerSocket:ServerSocket用于监听客户端的连接请求,并在有客户端连接时创建一个新的Socket对象来处理该连接。
  3. InputStream和OutputStream:用于在Socket之间传输数据。

示例代码

服务器端代码

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

public class SimpleServer {
    public static void main(String[] args) {
        int port = 12345; // 服务器监听的端口

        try (ServerSocket serverSocket = new ServerSocket(port)) {
            System.out.println("服务器已启动,正在监听端口 " + port);

            while (true) {
                try (Socket clientSocket = serverSocket.accept()) {
                    System.out.println("客户端已连接: " + clientSocket.getInetAddress());

                    InputStream input = clientSocket.getInputStream();
                    BufferedReader reader = new BufferedReader(new InputStreamReader(input));

                    OutputStream output = clientSocket.getOutputStream();
                    PrintWriter writer = new PrintWriter(output, true);

                    String request = reader.readLine();
                    System.out.println("收到客户端消息: " + request);

                    String response = "服务器已收到消息: " + request;
                    writer.println(response);

                    System.out.println("已发送响应给客户端");
                } catch (IOException e) {
                    System.out.println("处理客户端连接时发生错误: " + e.getMessage());
                }
            }
        } catch (IOException e) {
            System.out.println("无法启动服务器: " + e.getMessage());
        }
    }
}

客户端代码

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

public class SimpleClient {
    public static void main(String[] args) {
        String hostname = "localhost"; // 服务器地址
        int port = 12345; // 服务器监听的端口

        try (Socket socket = new Socket(hostname, port)) {
            System.out.println("已连接到服务器 " + hostname + ":" + port);

            OutputStream output = socket.getOutputStream();
            PrintWriter writer = new PrintWriter(output, true);

            String message = "Hello, Server!";
            writer.println(message);
            System.out.println("已发送消息给服务器: " + message);

            InputStream input = socket.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(input));

            String response = reader.readLine();
            System.out.println("收到服务器响应: " + response);
        } catch (UnknownHostException e) {
            System.out.println("未知主机: " + e.getMessage());
        } catch (IOException e) {
            System.out.println("连接服务器时发生错误: " + e.getMessage());
        }
    }
}

运行步骤

  1. 编译代码

    javac SimpleServer.java SimpleClient.java
    
  2. 启动服务器

    java SimpleServer
    
  3. 启动客户端(可以在另一个终端窗口中进行):

    java SimpleClient
    

注意事项

通过以上步骤和示例代码,你可以在Linux上进行基本的Java网络编程。根据具体需求,你可以进一步扩展和优化代码。

0
看了该问题的人还看了