ホームページ >Java >&#&チュートリアル >Javaを使用してWebSocketファイル転送機能を開発する方法

Javaを使用してWebSocketファイル転送機能を開発する方法

WBOY
WBOYオリジナル
2023-12-17 15:18:421429ブラウズ

Javaを使用してWebSocketファイル転送機能を開発する方法

Java を使用して Websocket ファイル転送機能を開発する方法

インターネットの発展に伴い、ファイル転送は日常の仕事や生活に欠かせないものになりました。 Websocket は、ブラウザとサーバーの間に永続的な接続を確立する通信プロトコルとして、リアルタイムおよび双方向送信の特性を備えているため、ファイル転送に最適です。この記事では、Java を使用して Websocket ファイル転送機能を開発する方法と、具体的なコード例を紹介します。

1. Websocket サーバーの作成

ファイル転送機能を実装するには、まずクライアントのリクエストを受信して​​処理する Websocket サーバーを作成する必要があります。以下は、Java の Tomcat フレームワークを使用して Websocket サーバーを作成するためのサンプル コードです。

@ServerEndpoint("/upload")
public class FileUploadServer {

    @OnOpen
    public void onOpen(Session session) {
        System.out.println("Client connected: " + session.getId());
    }

    @OnMessage
    public void onMessage(ByteBuffer byteBuffer, Session session) throws IOException {
        Path path = Paths.get("uploads", session.getId() + ".jpg");
        Files.write(path, byteBuffer.array());
        System.out.println("File uploaded: " + path.toString());
    }

    @OnClose
    public void onClose(Session session) {
        System.out.println("Client disconnected: " + session.getId());
    }

    @OnError
    public void onError(Throwable e) {
        e.printStackTrace();
    }
}

上記のコードでは、@ServerEndpoint アノテーションを使用して Websocket サーバーに注釈を付け、クライアント アクセスを指定します。 URL は /upload です。サーバー側には、クライアント接続の処理、ファイル データの受信、切断、例外の処理をそれぞれ行うための 4 つのメソッドが用意されています。このうち、onMessage メソッドは、ファイルデータを受信したときに呼び出され、ファイルを uploads フォルダーに保存し、クライアントの ID をファイル名として使用します。

2. Websocket クライアントの作成

次に、ファイル データをサーバーに送信するための Websocket クライアントを作成する必要があります。以下は、Java の JavaFX フレームワークを使用して Websocket クライアントを作成するためのサンプル コードです。

public class FileUploadClient extends Application {

    private static final String SERVER_URI = "ws://localhost:8080/upload";

    private WebSocketClient client;

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        try {
            URI uri = new URI(SERVER_URI);
            client = new WebSocketClient(uri) {
                @Override
                public void onOpen(ServerHandshake handshakedata) {
                    System.out.println("Connected to server");
                }

                @Override
                public void onMessage(String message) {
                    System.out.println("Received message: " + message);
                }

                @Override
                public void onClose(int code, String reason, boolean remote) {
                    System.out.println("Disconnected from server");
                }

                @Override
                public void onError(Exception ex) {
                    ex.printStackTrace();
                }
            };
            client.connect();
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }
    }

    public void uploadFile(Path path) throws IOException {
        byte[] bytes = Files.readAllBytes(path);
        client.send(bytes);
        System.out.println("File uploaded: " + path.toString());
    }
}

上記のコードでは、サーバー側 URL ws:// に接続することにより、JavaFX を使用して単純なインターフェイスを作成しました。 localhost :8080/upload であり、サーバーとの通信のさまざまな段階を処理するクライアントの 4 つのメソッドを実装します。 uploadFile メソッドは、指定されたファイルをバイト配列に読み取り、クライアント経由でサーバーに送信するために使用されます。

3. サーバーとクライアントの起動

サーバーとクライアントのコードが完了したら、それらを起動してファイル転送機能をテストする必要があります。まず、サーバー側コードを Tomcat または Java Web アプリケーションをサポートするその他のサーバーにデプロイし、サーバーを起動する必要があります。その後、クライアント コードを直接実行して、JavaFX アプリケーションを起動できます。

プログラムの実行後、クライアントはサーバーとの接続を確立し、「サーバーに接続しました」というプロンプト メッセージがコンソールに表示されます。次に、インターフェース上のファイルセレクターを通じてアップロードするファイルを選択し、「アップロード」ボタンをクリックします。クライアントは選択したファイルをサーバーに送信し、「アップロードされたファイル: ファイル パス」というプロンプト メッセージをコンソールに出力します。

4. 概要

この記事では、Java を使用して Websocket ファイル転送機能を開発する方法を紹介し、サーバーとクライアントの具体的なコード例を示します。 Websocket プロトコルの双方向通信とリアルタイム性により、高速、効率的、安全なファイル転送を実現できます。読者の皆様は、この記事で提供されているサンプル コードに基づいて、Websocket ファイル転送テクノロジをさらに検討して適用できると思います。

以上がJavaを使用してWebSocketファイル転送機能を開発する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。