在Linux上进行Java网络编程,主要涉及到使用Java的网络库(如java.net包)来实现客户端和服务器之间的通信。以下是一些基本的概念和示例代码,帮助你了解如何在Linux上进行Java网络编程。
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());
}
}
}
编译代码:
javac SimpleServer.java SimpleClient.java
启动服务器:
java SimpleServer
启动客户端(可以在另一个终端窗口中进行):
java SimpleClient
通过以上步骤和示例代码,你可以在Linux上进行基本的Java网络编程。根据具体需求,你可以进一步扩展和优化代码。