Rumah  >  Artikel  >  Java  >  Apakah alat komunikasi rangkaian biasa yang disertakan dalam perpustakaan fungsi Java?

Apakah alat komunikasi rangkaian biasa yang disertakan dalam perpustakaan fungsi Java?

WBOY
WBOYasal
2024-05-02 21:15:01815semak imbas

Pustaka fungsi Java menyediakan satu siri alat komunikasi rangkaian, termasuk pakej java.net (menyediakan kelas rangkaian teras), pakej java.nio (menyediakan API I/O berprestasi tinggi) dan alatan berguna lain seperti Apache HttpClient , Netty dan gRPC Java). Alat ini membolehkan pembangun mencipta aplikasi klien dan pelayan, menghantar dan menerima data dengan mudah serta mengurus sambungan rangkaian.

Java 函数库中都有哪些常用网络通信工具?

Alat komunikasi rangkaian biasa dalam perpustakaan Java

Bahasa pengaturcaraan Java menyediakan satu siri perpustakaan dan kelas fungsi yang berkuasa untuk membina aplikasi komunikasi rangkaian yang boleh dipercayai dan cekap. Alat ini membolehkan pembangun berkomunikasi dengan mudah antara pelanggan dan pelayan, menghantar dan menerima data serta mengurus sambungan rangkaian. Berikut ialah beberapa alat komunikasi rangkaian yang paling biasa digunakan dalam pustaka fungsi Java:

pakej java.net

Pakejjava.net mengandungi kelas komunikasi rangkaian teras dan antara muka yang disediakan oleh Java platform. Ia menyediakan sokongan untuk soket TCP/IP, URL, URI dan infrastruktur rangkaian lain. java.net 包包含 Java 平台提供的核心网络通信类和接口。它为 TCP/IP 套接字、URL、URI 和其他网络基础设施提供了支持。

  • Socket:表示网络通信中的端点,可用于发送和接收数据。
  • ServerSocket:表示服务器端套接字,用于侦听传入连接。
  • URL:Uniform Resource Locator,指定网络资源的地址。
  • URI:Uniform Resource Identifier,用于唯一标识网络资源。

实战案例:使用 Socket 创建简单客户端和服务器

// 客户端
import java.net.*;

public class SocketClient {

    public static void main(String[] args) throws Exception {
        // 创建 Socket 并连接到服务器
        Socket socket = new Socket("localhost", 8080);

        // 获取输出流并发送消息
        DataOutputStream out = new DataOutputStream(socket.getOutputStream());
        out.writeUTF("Hello from client!");

        // 关闭输出流和 Socket
        out.close();
        socket.close();
    }
}

// 服务器
import java.net.*;

public class SocketServer {

    public static void main(String[] args) throws Exception {
        // 创建 ServerSocket 并侦听连接
        ServerSocket serverSocket = new ServerSocket(8080);

        while (true) {
            // 接受客户端连接
            Socket clientSocket = serverSocket.accept();

            // 获取输入流并读取消息
            DataInputStream in = new DataInputStream(clientSocket.getInputStream());
            String message = in.readUTF();

            System.out.println("Received message: " + message);

            // 关闭输入流和 Socket
            in.close();
            clientSocket.close();
        }
    }
}

java.nio 包

java.nio

  • Soket: Mewakili titik akhir dalam komunikasi rangkaian dan boleh digunakan untuk menghantar dan menerima data.
  • ServerSocket: Mewakili soket sebelah pelayan yang digunakan untuk mendengar sambungan masuk.
  • URL: Pencari Sumber Seragam, menyatakan alamat sumber rangkaian.
URI

: Pengecam Sumber Seragam, digunakan untuk mengenal pasti sumber rangkaian secara unik.

Kes praktikal: Gunakan Soket untuk mencipta pelanggan dan pelayan yang mudah

// 服务器
import java.net.*;
import java.nio.*;
import java.nio.channels.*;

public class NonBlockingServerSocket {

    public static void main(String[] args) throws Exception {
        // 创建 ServerSocketChannel 并绑定到端口
        ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();
        serverSocketChannel.bind(new InetSocketAddress(8080));
        serverSocketChannel.configureBlocking(false);

        // 创建 Selector 并注册 ServerSocketChannel
        Selector selector = Selector.open();
        serverSocketChannel.register(selector, SelectionKey.OP_ACCEPT);

        while (true) {
            // 侦听可用的选择键
            int readyKeys = selector.select();

            if (readyKeys == 0) {
                continue;
            }

            // 处理可用的选择键
            Iterator<SelectionKey> keys = selector.selectedKeys().iterator();
            while (keys.hasNext()) {
                SelectionKey key = keys.next();
                keys.remove();

                // 处理可接受的键
                if (key.isAcceptable()) {
                    SocketChannel clientSocketChannel = serverSocketChannel.accept();
                    clientSocketChannel.configureBlocking(false);
                    clientSocketChannel.register(selector, SelectionKey.OP_READ);
                }

                // 处理可读的键
                else if (key.isReadable()) {
                    // ...
                }
            }
        }
    }
}

    pakej java.nio
  • java.nio pakej menyediakan pakej tanpa sekatan tahap rendah dan berprestasi tinggi Pakej I/O O API, digunakan untuk mengendalikan komunikasi rangkaian. Ia menyediakan kelas utama berikut:
  • ByteBuffer
  • : Mewakili penimbal yang mengandungi data binari mentah.
  • SelectableChannel
  • : Mewakili saluran IO yang boleh diminati oleh pemilih.
  • Selector
  • : Digunakan untuk mendaftar dan memilih saluran yang boleh dibaca, boleh ditulis atau boleh diterima.
🎜🎜🎜Kes praktikal: Menulis pelayan tidak menyekat menggunakan Selector🎜🎜rrreee🎜🎜Alat komunikasi rangkaian lain yang berguna🎜🎜🎜🎜🎜Apache HttpClient🎜Apache HttpClient🎜: Menyediakan permintaan yang kaya dengan perpustakaan HTTP dan klien HTTP 🎜🎜🎜Apache HttpClient Async🎜: Versi tidak menyekat HttpClient Asynchronous yang menyokong komunikasi HTTP tak segerak. 🎜🎜🎜Netty🎜: Rangka kerja pengaturcaraan rangkaian berasaskan acara berprestasi tinggi yang menyokong berbilang protokol, termasuk TCP, UDP dan HTTP. 🎜🎜🎜gRPC Java🎜: Rangka kerja untuk membina dan melayani panggilan prosedur jauh berasaskan protobuf. 🎜🎜

Atas ialah kandungan terperinci Apakah alat komunikasi rangkaian biasa yang disertakan dalam perpustakaan fungsi Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn