📜  Java-网络(1)

📅  最后修改于: 2023-12-03 14:42:20.486000             🧑  作者: Mango

Java 网络编程介绍

Java 是一门流行的编程语言,而网络编程是 Java 的一个重要方向。本文将介绍 Java 网络编程的基础知识和常用工具类。

网络编程基础

Java 网络编程主要涉及以下两个方面:

  1. 网络通信协议:TCP/IP 协议是互联网通信的基础,Java 网络编程通常使用的是基于 TCP 协议的 Socket。
  2. Java 网络编程 API:Java 提供了强大的网络编程 API,使得开发者可以简单、高效地实现各种网络应用程序。

以下是 Java 网络编程的基础知识:

IP 地址

IP 地址是在 Internet 上唯一标识一个网络机器的地址。Java 中可以使用 InetAddress 类来获取 IP 地址。

InetAddress address = InetAddress.getByName("www.baidu.com");
System.out.println(address.toString());
Socket

Socket 是网络编程中的基本概念,它是一个抽象概念,包含了 IP 地址和端口号。

Java 中可以使用 SocketServerSocket 类来实现网络通信。

// 客户端
Socket client = new Socket("127.0.0.1", 9999);

// 服务端
ServerSocket server = new ServerSocket(9999);
Socket serverSocket = server.accept();
URL

URL 表示统一资源定位器,它是 Internet 上各种资源的唯一标识符。Java 中可以使用 URL 类来操作 URL。

URL url = new URL("https://www.baidu.com");
System.out.println(url.toString());
Java 网络编程工具类

Java 在网络编程方面提供了很多优秀的工具类,以下是常用的几个工具类:

HttpURLConnection

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

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

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 中还提供了 URLClassLoaderURLConnectionMulticastSocket 等多种工具类用于网络编程。