JAVA网络编程
Java 网络编程允许应用程序通过网络(如互联网)进行通信。Java 的 java.net 包提供了一系列用于网络编程的类和接口。以下是 Java 网络编程的一些基本概念和用法:
网络通信基础
IP 地址:用于唯一标识网络上的设备。
端口号:用于标识设备上运行的特定服务。
协议:如 TCP(传输控制协议)和 UDP(用户数据报协议),用于定义数据交换的规则。
网络编程类和接口
InetAddress:用于表示 IP 地址。
Socket:表示网络通信的端点,用于 TCP 连接。
ServerSocket:用于监听新进来的 TCP 连接。
DatagramSocket:用于 UDP 连接。
URL 和 URLConnection:用于访问网络资源。
Socket 编程
建立连接
java
复制
Socket socket = new Socket("hostname", port);
读写数据
java
复制
OutputStream os = socket.getOutputStream(); os.write(data); InputStream is = socket.getInputStream(); int data = is.read();
关闭连接
java
复制
socket.close();
UDP 编程
发送数据
java
复制
DatagramSocket ds = new DatagramSocket(); byte[] buffer = new byte[1024]; DatagramPacket dp = new DatagramPacket(buffer, buffer.length, host, port); ds.send(dp);
接收数据
java
复制
byte[] buffer = new byte[1024]; DatagramPacket dp = new DatagramPacket(buffer, buffer.length); ds.receive(dp);
服务器和客户端模型
服务器:监听来自客户端的连接请求,并提供服务。
客户端:向服务器发送请求,并接收服务器的响应。
网络字节流和字符流
字节流:如 InputStream 和 OutputStream,用于处理字节数据。
字符流:如 Reader 和 Writer,用于处理字符数据。
网络编程中的常用协议
HTTP:超文本传输协议,用于 web 浏览器和服务器之间的通信。
HTTPS:HTTP 的安全版本,使用 SSL/TLS 加密。
FTP:文件传输协议,用于文件传输。
SMTP:简单邮件传输协议,用于发送电子邮件。
网络编程中的常见应用
Web 应用程序:使用 HTTP 协议。
文件传输:使用 FTP 协议。
电子邮件:使用 SMTP 协议发送邮件,使用 POP3 或 IMAP 协议接收邮件。
示例:简单的 HTTP 服务器
java
复制
import java.io.*; import java.net.*; public class SimpleHttpServer { public static void main(String[] args) throws IOException { ServerSocket serverSocket = new ServerSocket(8080); while (true) { Socket clientSocket = serverSocket.accept(); InputStream inputStream = clientSocket.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String line = reader.readLine(); while (!line.isEmpty()) { System.out.println(line); line = reader.readLine(); } PrintWriter writer = new PrintWriter(clientSocket.getOutputStream(), true); writer.println("HTTP/1.1 200 OK"); writer.println("Content-Type: text/html"); writer.println(); writer.println("<html><body>Hello, world!</body></html>"); clientSocket.close(); } } }
网络编程是 Java 编程中的一个重要领域,它允许应用程序连接到网络资源,如 web 服务、文件服务器和远程数据存储。掌握网络编程对于开发能够与其他系统或设备通信的 Java 应用程序至关重要。