第一章:Java网络编程基础
1.1 Java网络编程简介
Java网络编程是Java语言中一个非常重要的组成部分,它允许Java程序与网络中的其他计算机进行通信。Java网络编程主要基于Java的网络API,如java.net包中的类。
1.2 Java网络编程的原理
Java网络编程主要基于TCP/IP协议,它允许程序通过套接字(Socket)进行网络通信。套接字是网络通信的端点,它由IP地址和端口号组成。
1.3 Java网络编程的核心类
Socket:表示客户端和服务器之间的连接。ServerSocket:表示服务器端的套接字,用于监听客户端的连接请求。InetAddress:用于获取IP地址信息。URL:用于解析URL地址。
第二章:Java网络编程核心技术
2.1 TCP编程
TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。下面是一个简单的TCP客户端和服务器示例:
// TCP服务器端
ServerSocket serverSocket = new ServerSocket(8080);
Socket socket = serverSocket.accept();
InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();
is.read(bytes);
os.write("Hello, client!".getBytes());
socket.close();
serverSocket.close();
// TCP客户端
Socket socket = new Socket("localhost", 8080);
OutputStream os = socket.getOutputStream();
InputStream is = socket.getInputStream();
os.write("Hello, server!".getBytes());
is.read(bytes);
socket.close();
2.2 UDP编程
UDP(用户数据报协议)是一种无连接的、不可靠的、基于数据报的传输层通信协议。下面是一个简单的UDP客户端和服务器示例:
// UDP服务器端
DatagramSocket socket = new DatagramSocket(8080);
byte[] buffer = new byte[1024];
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
socket.receive(packet);
String message = new String(packet.getData(), 0, packet.getLength());
socket.send(new DatagramPacket(message.getBytes(), message.getBytes().length, packet.getAddress(), packet.getPort()));
socket.close();
// UDP客户端
DatagramSocket socket = new DatagramSocket();
String message = "Hello, server!";
InetAddress address = InetAddress.getByName("localhost");
DatagramPacket packet = new DatagramPacket(message.getBytes(), message.getBytes().length, address, 8080);
socket.send(packet);
byte[] buffer = new byte[1024];
packet = new DatagramPacket(buffer, buffer.length);
socket.receive(packet);
String response = new String(packet.getData(), 0, packet.getLength());
socket.close();
2.3 HTTP编程
HTTP(超文本传输协议)是一种应用层协议,用于在Web浏览器和服务器之间传输数据。下面是一个简单的HTTP客户端示例:
// HTTP客户端
URL url = new URL("http://www.example.com");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
reader.close();
connection.disconnect();
第三章:Java网络编程实战案例
3.1 实战案例一:文件传输
以下是一个简单的文件传输客户端和服务器示例:
// 文件传输服务器端
ServerSocket serverSocket = new ServerSocket(8080);
Socket socket = serverSocket.accept();
InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();
File file = new File("example.txt");
byte[] buffer = new byte[(int) file.length()];
is.read(buffer);
os.write(buffer);
socket.close();
serverSocket.close();
// 文件传输客户端
Socket socket = new Socket("localhost", 8080);
OutputStream os = socket.getOutputStream();
InputStream is = socket.getInputStream();
File file = new File("example.txt");
byte[] buffer = new byte[(int) file.length()];
os.write(file.getBytes());
is.read(buffer);
File newFile = new File("new_example.txt");
new FileOutputStream(newFile).write(buffer);
socket.close();
3.2 实战案例二:聊天室
以下是一个简单的聊天室客户端和服务器示例:
// 聊天室服务器端
ServerSocket serverSocket = new ServerSocket(8080);
Socket socket = serverSocket.accept();
InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();
String message;
while ((message = (String) is.readObject()) != null) {
System.out.println("Client: " + message);
os.writeObject("Server: " + message);
}
socket.close();
serverSocket.close();
// 聊天室客户端
Socket socket = new Socket("localhost", 8080);
OutputStream os = socket.getOutputStream();
InputStream is = socket.getInputStream();
ObjectOutputStream oos = new ObjectOutputStream(os);
ObjectInputStream ois = new ObjectInputStream(is);
String message;
while ((message = (String) ois.readObject()) != null) {
System.out.println("Server: " + message);
}
oos.writeObject("Client: Hello, server!");
ois.close();
oos.close();
socket.close();
第四章:总结
Java网络编程是一个复杂且广泛的应用领域。通过学习本章内容,你将了解到Java网络编程的基础知识、核心技术以及实战案例。希望这些内容能帮助你轻松上手Java网络编程,并在实际项目中应用所学知识。
