Java ネットワーク プログラミングでは、コネクションレス通信に UDP をどのように使用しますか?

WBOY
リリース: 2024-04-15 12:51:01
オリジナル
428 人が閲覧しました

UDP (ユーザー データグラム プロトコル) は、時間に敏感なアプリケーションで一般的に使用される軽量のコネクションレス型ネットワーク プロトコルです。これにより、アプリケーションは TCP 接続を確立せずにデータを送受信できるようになります。サンプル Java コードを使用して UDP サーバーとクライアントを作成できます。サーバーは受信データグラムをリッスンして応答し、クライアントはメッセージを送信して応答を受信します。このコードを使用して、チャット アプリケーションやデータ収集システムなどの実際のユースケースを構築できます。

Java ネットワーク プログラミングでは、コネクションレス通信に UDP をどのように使用しますか?

Java ネットワーク プログラミング: UDP を使用したコネクションレス型通信

はじめに

UDP (ユーザー データグラム プロトコル) は、時間に敏感なアプリケーションで一般的に使用される軽量のコネクションレス型ネットワーク プロトコルです。これにより、アプリケーションは TCP 接続を確立せずにデータを送受信できるようになります。

#使用法#Java を使用して UDP サーバーとクライアントを作成する例を次に示します:

サーバー コード:

import java.net.*;

public class UDPServer {

    public static void main(String[] args) throws Exception {
        // 创建一个DatagramSocket,监听6789端口
        DatagramSocket serverSocket = new DatagramSocket(6789);

        // 持续监听传入的数据报
        while (true) {
            // 创建一个数据报对象来接收数据
            DatagramPacket receivePacket = new DatagramPacket(new byte[1024], 1024);

            // 接收数据报
            serverSocket.receive(receivePacket);

            // 获取客户端地址和端口
            InetAddress clientAddress = receivePacket.getAddress();
            int clientPort = receivePacket.getPort();

            // 将数据报转换为字符串
            String message = new String(receivePacket.getData(), 0, receivePacket.getLength());

            System.out.println("收到来自 " + clientAddress + ":" + clientPort + " 的消息:" + message);

            // 创建一个数据报对象来响应客户端
            DatagramPacket responsePacket = new DatagramPacket(
                    ("响应:" + message).getBytes(),
                    ("响应:" + message).getBytes().length,
                    clientAddress,
                    clientPort
            );

            // 发送响应
            serverSocket.send(responsePacket);
        }

        // 关闭服务器套接字
        serverSocket.close();
    }
}
ログイン後にコピー

クライアント コード:

import java.net.*;

public class UDPClient {

    public static void main(String[] args) throws Exception {
        // 创建一个DatagramSocket
        DatagramSocket clientSocket = new DatagramSocket();

        // 获取要发送的消息
        String message = "你好,世界!";

        // 将消息转换为字节数组
        byte[] messageBytes = message.getBytes();

        // 创建一个数据报对象,将消息发送到服务器的6789端口
        DatagramPacket sendPacket = new DatagramPacket(
                messageBytes,
                messageBytes.length,
                InetAddress.getByName("localhost"), // 服务器地址
                6789 // 服务器端口
        );

        // 发送数据报
        clientSocket.send(sendPacket);

        // 创建一个数据报对象来接收服务器的响应
        DatagramPacket receivePacket = new DatagramPacket(new byte[1024], 1024);

        // 接收响应
        clientSocket.receive(receivePacket);

        // 将响应转换为字符串
        String response = new String(receivePacket.getData(), 0, receivePacket.getLength());

        // 打印响应
        System.out.println("收到服务器的响应:" + response);

        // 关闭客户端套接字
        clientSocket.close();
    }
}
ログイン後にコピー

実用的なケース

このコードは、単純なチャット アプリケーションまたはデータ コレクションの構築に使用できます。システム。たとえば、クライアント コードを使用してサーバーにメッセージを送信し、サーバー コードを使用してメッセージに応答することができます。

以上がJava ネットワーク プログラミングでは、コネクションレス通信に UDP をどのように使用しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート