ubuntu

Java在Ubuntu上的网络编程如何实现

小樊
43
2025-04-19 13:41:08
栏目: 编程语言

在Ubuntu上使用Java进行网络编程,你可以使用Java标准库中的java.net包。这个包提供了用于实现各种网络协议的类和接口,例如TCP、UDP、HTTP等。以下是一个简单的示例,展示了如何在Ubuntu上使用Java编写一个TCP客户端和服务器。

1. 编写TCP服务器

首先,创建一个名为TCPServer.java的文件,并添加以下代码:

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

public class TCPServer {
    public static void main(String[] args) {
        int port = 12345;

        try (ServerSocket serverSocket = new ServerSocket(port)) {
            System.out.println("Server is listening on port " + port);

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

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

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

                String message;
                while ((message = reader.readLine()) != null) {
                    System.out.println("Received: " + message);
                    writer.println("Server received: " + message);
                }

                socket.close();
            }
        } catch (IOException e) {
            System.out.println("Server exception: " + e.getMessage());
            e.printStackTrace();
        }
    }
}

2. 编写TCP客户端

接下来,创建一个名为TCPClient.java的文件,并添加以下代码:

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

public class TCPClient {
    public static void main(String[] args) {
        String serverAddress = "localhost";
        int port = 12345;

        try (Socket socket = new Socket(serverAddress, port)) {
            OutputStream output = socket.getOutputStream();
            PrintWriter writer = new PrintWriter(output, true);

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

            // Send a message to the server
            writer.println("Hello, Server!");

            // Read the response from the server
            String message;
            while ((message = reader.readLine()) != null) {
                System.out.println("Received from server: " + message);
            }
        } catch (UnknownHostException e) {
            System.out.println("Server not found: " + e.getMessage());
        } catch (IOException e) {
            System.out.println("I/O error: " + e.getMessage());
        }
    }
}

3. 编译和运行

在终端中,导航到包含这两个文件的目录,然后分别编译和运行它们。

# 编译服务器和客户端
javac TCPServer.java
javac TCPClient.java

# 运行服务器
java TCPServer

# 在另一个终端窗口中运行客户端
java TCPClient

4. 测试

当客户端运行并发送消息到服务器时,服务器应该接收消息并回复确认。你应该在服务器终端看到客户端的连接和消息,并在客户端终端看到服务器的回复。

这个例子展示了如何在Ubuntu上使用Java进行基本的网络编程。你可以根据需要扩展这个示例,添加更多的功能,例如处理多个客户端、使用不同的协议(如UDP)、实现更复杂的通信逻辑等。

0
看了该问题的人还看了