📅  最后修改于: 2023-12-03 14:42:20.486000             🧑  作者: Mango
Java 是一门流行的编程语言,而网络编程是 Java 的一个重要方向。本文将介绍 Java 网络编程的基础知识和常用工具类。
Java 网络编程主要涉及以下两个方面:
以下是 Java 网络编程的基础知识:
IP 地址是在 Internet 上唯一标识一个网络机器的地址。Java 中可以使用 InetAddress
类来获取 IP 地址。
InetAddress address = InetAddress.getByName("www.baidu.com");
System.out.println(address.toString());
Socket 是网络编程中的基本概念,它是一个抽象概念,包含了 IP 地址和端口号。
Java 中可以使用 Socket
和 ServerSocket
类来实现网络通信。
// 客户端
Socket client = new Socket("127.0.0.1", 9999);
// 服务端
ServerSocket server = new ServerSocket(9999);
Socket serverSocket = server.accept();
URL 表示统一资源定位器,它是 Internet 上各种资源的唯一标识符。Java 中可以使用 URL
类来操作 URL。
URL url = new URL("https://www.baidu.com");
System.out.println(url.toString());
Java 在网络编程方面提供了很多优秀的工具类,以下是常用的几个工具类:
HttpURLConnection
是 Java 中的一个 HTTP 请求工具类,可以方便地完成 HTTP 请求,并获得响应结果。
URL url = new URL("https://www.baidu.com");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuffer buffer = new StringBuffer();
String line;
while ((line = reader.readLine()) != null) {
buffer.append(line);
}
reader.close();
conn.disconnect();
System.out.println(buffer.toString());
DatagramSocket
是 Java 中的一个基于 UDP 协议的网络编程工具类,可以实现无连接通信和广播通信。
// 客户端
DatagramSocket socket = new DatagramSocket();
InetAddress address = InetAddress.getByName("127.0.0.1");
byte[] buf = "hello".getBytes();
DatagramPacket packet = new DatagramPacket(buf, buf.length, address, 8888);
socket.send(packet);
// 服务端
DatagramSocket socket = new DatagramSocket(8888);
byte[] buf = new byte[1024];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
socket.receive(packet);
String message = new String(packet.getData(), 0, packet.getLength());
System.out.println(message);
socket.close();
SocketChannel
是 Java 中的一个基于 TCP 协议的网络编程工具类,可以实现高伸缩性、高效的网络通信。
// 客户端
SocketChannel channel = SocketChannel.open(new InetSocketAddress("127.0.0.1", 9999));
ByteBuffer buf = ByteBuffer.wrap("hello".getBytes());
channel.write(buf);
channel.close();
// 服务端
ServerSocketChannel server = ServerSocketChannel.open();
server.socket().bind(new InetSocketAddress(9999));
SocketChannel channel = server.accept();
ByteBuffer buf = ByteBuffer.allocate(1024);
channel.read(buf);
String message = new String(buf.array());
System.out.println(message);
channel.close();
server.close();
除了以上工具类,Java 中还提供了 URLClassLoader
、URLConnection
、MulticastSocket
等多种工具类用于网络编程。