1. Socket 编程:
Java 中的网络通信主要基于 Socket 编程。Socket 是一种用于在网络上进行通信的机制,它允许应用程序通过网络发送和接收数据。
1.1 服务端:
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) {
try {
// 创建 ServerSocket 对象并绑定端口
ServerSocket serverSocket = new ServerSocket(8080);
System.out.println("Server is listening on port 8080...");
// 等待客户端连接
Socket clientSocket = serverSocket.accept();
// 处理客户端连接
// ...
// 关闭连接
clientSocket.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
1.2 客户端:
import java.io.IOException;
import java.net.Socket;
public class Client {
public static void main(String[] args) {
try {
// 创建 Socket 对象并连接到服务端
Socket socket = new Socket("localhost", 8080);
// 处理与服务端的通信
// ...
// 关闭连接
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
2. TCP 通信:
TCP(Transmission Control Protocol)是一种可靠的、面向连接的协议,通过 Socket 实现。
3. UDP 通信:
UDP(User Datagram Protocol)是一种无连接的、不可靠的协议,也通过 Socket 实现。
4. HTTP 通信:
Java 提供了 HttpURLConnection 类,用于实现基于 HTTP 的通信。
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class HttpExample {
public static void main(String[] args) {
try {
// 创建 URL 对象
URL url = new URL("https://www.example.com");
// 打开 HTTP 连接
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// 设置请求方法
connection.setRequestMethod("GET");
// 获取响应码
int responseCode = connection.getResponseCode();
System.out.println("Response Code: " + responseCode);
// 读取响应数据
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
StringBuilder response = new StringBuilder();
while ((line = reader.readLine()) != null) {
response.append(line);
}
reader.close();
System.out.println("Response Data: " + response.toString());
// 关闭连接
connection.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
}
}
5. Socket 通信实例:
一个简单的基于 Socket 的通信实例,实现服务端和客户端的消息传递。
5.1 服务端:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class SimpleServer {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(8080);
System.out.println("Server is listening on port 8080...");
while (true) {
Socket clientSocket = serverSocket.accept();
BufferedReader reader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String message = reader.readLine();
System.out.println("Received message from client: " + message);
reader.close();
clientSocket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
5.2 客户端:
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
public class SimpleClient {
public static void main(String[] args) {
try {
Socket socket = new Socket("localhost", 8080);
PrintWriter writer = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()), true);
writer.println("Hello, Server!");
writer.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
6. 网络异常处理:
在网络通信中,要注意处理各种异常情况,如连接超时、IO 异常等。
以上是一个简单的 Java 网络教程,涵盖了基本的网络编程概念和用法。网络编程是一个广泛的主题,还涉及到异步编程、网络协议、安全性等方面的内容。
转载请注明出处:http://www.zyzy.cn/article/detail/461/Java