Java网络编程:构建网络应用的基石 🌐
🎯 掌握Java网络编程,打造强大的网络应用!
在上一篇文章中,我们探讨了Java的I/O操作和反射机制。今天,让我们深入学习Java网络编程,了解如何构建网络应用程序! 💻
1. 网络编程基础 📡
Java提供了强大的网络编程API,支持各种网络协议和通信模式。让我们从基础概念开始学习。
1.1 网络基础概念
- IP地址:网络设备的唯一标识
- 端口号:应用程序的通信端点
- 协议:通信规则(如TCP、UDP)
- Socket:网络通信的端点
public class NetworkBasics {
public static void main(String[] args) throws Exception {
// 获取本机IP地址
InetAddress localHost = InetAddress.getLocalHost();
System.out.println("本机IP地址:" + localHost.getHostAddress());
// 解析域名
InetAddress github = InetAddress.getByName("github.com");
System.out.println("GitHub IP地址:" + github.getHostAddress());
// 检查主机可达性
boolean reachable = github.isReachable(5000);
System.out.println("GitHub是否可达:" + reachable);
}
}
1.2 URL处理
public class URLExample {
public static void main(String[] args) {
try {
URL url = new URL("https://api.github.com/users/octocat");
// 获取URL信息
System.out.println("协议:" + url.getProtocol());
System.out.println("主机:" + url.getHost());
System.out.println("端口:" + url.getPort());
System.out.println("路径:" + url.getPath());
// 读取URL内容
try (BufferedReader reader = new BufferedReader(
new InputStreamReader(url.openStream()))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
}
} catch (IOException e) {
System.out.println("URL处理错误:" + e.getMessage());
}
}
}
2. Socket编程 🔌
Socket是网络编程的核心,让我们通过实例来学习TCP和UDP通信。
2.1 TCP通信示例
服务器端代码:
public class TCPServer {
public static void main(String[] args) {
try (ServerSocket serverSocket = new ServerSocket(8888)) {
System.out.println("服务器启动,等待连接...");
while (true) {
Socket clientSocket = serverSocket.accept();
System.out.println("客户端已连接:" + clientSocket.getInetAddress());
// 处理客户端请求
new Thread(() -> handleClient(clientSocket)).start();
}
} catch (IOException e) {
System.out.println("服务器错误:" + e.getMessage());
}
}
private static void handleClient(Socket clientSocket) {
try (
BufferedReader reader = new BufferedReader(
new InputStreamReader(clientSocket.getInputStream()));
PrintWriter writer = new PrintWriter(
clientSocket.getOutputStream(), true)
) {
String message;
while ((message = reader.readLine()) != null) {
System.out.println("收到消息:" + message);
writer.println("服务器收到:" + message);
}
} catch (IOException e) {
System.out.println("客户端处理错误:" + e.getMessage());
}
}
}
客户端代码:
public class TCPClient {
public static void main(String[] args) {
try (
Socket socket = new Socket("localhost", 8888);
BufferedReader reader = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
PrintWriter writer = new PrintWriter(
socket.getOutputStream(), true);
BufferedReader consoleReader = new BufferedReader(
new InputStreamReader(System.in))
) {
System.out.println("已连接到服务器");
String message;
while ((message = consoleReader.readLine()) != null) {
writer.println(message);
System.out.println("服务器响应:" + reader.readLine());
}
} catch (IOException e) {
System.out.println("客户端错误:" + e.getMessage()