在Ubuntu上进行Java网络编程,你可以使用Java提供的标准库,如java.net包中的类和接口。以下是一个简单的Java网络编程示例,包括一个服务器端和一个客户端。
1. 服务器端
创建一个名为Server.java
的文件,并添加以下代码:
import java.io.*; import java.net.*; public class Server { 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 from client: " + message); writer.println("Server received: " + message); } socket.close(); } } catch (IOException e) { System.out.println("Server exception: " + e.getMessage()); e.printStackTrace(); } } }
2. 客户端
创建一个名为Client.java
的文件,并添加以下代码:
import java.io.*; import java.net.*; public class Client { public static void main(String[] args) { String host = "localhost"; int port = 12345; try (Socket socket = new Socket(host, 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!"); // Receive a response from the server String message = reader.readLine(); System.out.println("Received from server: " + message); } catch (UnknownHostException e) { System.out.println("Client exception: " + e.getMessage()); e.printStackTrace(); } catch (IOException e) { System.out.println("Client exception: " + e.getMessage()); e.printStackTrace(); } } }
3. 编译和运行
在终端中,转到包含Server.java
和Client.java
的目录,然后分别编译它们:
javac Server.java javac Client.java
首先运行服务器端:
java Server
然后在另一个终端窗口中运行客户端:
java Client
你应该会看到服务器端接收到来自客户端的消息,并向客户端发送确认消息。
这只是一个简单的示例,你可以根据需要扩展它,例如添加多线程以处理多个客户端连接,或者实现更复杂的通信协议。