Rumah  >  Artikel  >  Java  >  Cara menggunakan Java untuk membangunkan fungsi pemindahan fail Websocket

Cara menggunakan Java untuk membangunkan fungsi pemindahan fail Websocket

WBOY
WBOYasal
2023-12-17 15:18:421289semak imbas

Cara menggunakan Java untuk membangunkan fungsi pemindahan fail Websocket

Cara menggunakan Java untuk membangunkan fungsi pemindahan fail Websocket

Dengan perkembangan Internet, pemindahan fail telah menjadi bahagian yang sangat diperlukan dalam kerja dan kehidupan harian. Sebagai protokol komunikasi yang mewujudkan sambungan berterusan antara penyemak imbas dan pelayan, Websocket mempunyai ciri penghantaran masa nyata dan dua hala, menjadikannya pilihan ideal untuk pemindahan fail. Artikel ini akan memperkenalkan cara menggunakan Java untuk membangunkan fungsi pemindahan fail Websocket dan memberikan contoh kod khusus.

1. Cipta pelayan Websocket

Untuk melaksanakan fungsi pemindahan fail, anda perlu mencipta pelayan Websocket untuk menerima dan memproses permintaan pelanggan. Berikut ialah contoh kod untuk mencipta pelayan Websocket menggunakan rangka kerja Tomcat Java:

@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();
    }
}

Dalam kod di atas, kami menggunakan anotasi @ServerEndpoint untuk menganotasi pelayan Websocket dan menentukan URL yang diakses oleh pelanggan sebagai /upload. Bahagian pelayan menyediakan empat kaedah untuk mengendalikan sambungan klien, menerima data fail, memutuskan sambungan dan mengendalikan pengecualian masing-masing. Antaranya, kaedah onMessage dipanggil apabila menerima data fail, menyimpan fail ke folder muat naik dan menggunakan ID klien sebagai nama fail. @ServerEndpoint注解标注了一个Websocket服务器端,并指定了客户端访问的URL为/upload。服务器端提供了四个方法,分别处理客户端连接、接收文件数据、断开连接和处理异常。其中,onMessage方法在接收到文件数据时调用,将文件保存到uploads文件夹中,并以客户端的ID作为文件名。

二、创建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());
    }
}

在上述代码中,我们使用JavaFX创建了一个简单的界面,通过连接到服务器端的URL ws://localhost:8080/upload,并实现了客户端的四个方法,分别处理与服务器端通信的各个阶段。uploadFile

2. Buat klien Websocket

Seterusnya, kita perlu mencipta klien Websocket untuk menghantar data fail ke pelayan. Di bawah ialah contoh kod untuk mencipta klien Websocket menggunakan rangka kerja JavaFX Java:

rrreee

Dalam kod di atas, kami telah mencipta antara muka mudah menggunakan JavaFX dengan menyambung ke URL sebelah pelayan ws://localhost:8080/ muat naik , dan melaksanakan empat kaedah pada bahagian klien untuk mengendalikan pelbagai peringkat komunikasi dengan bahagian pelayan. Kaedah uploadFile digunakan untuk membaca fail yang ditentukan ke dalam tatasusunan bait dan menghantarnya ke pelayan melalui klien.

3. Mulakan pelayan dan pelanggan

Selepas melengkapkan kod pelayan dan pelanggan, kita perlu memulakannya untuk menguji fungsi pemindahan fail. Mula-mula, anda perlu menggunakan kod sebelah pelayan ke Tomcat atau pelayan lain yang menyokong aplikasi web Java, dan mulakan pelayan. Anda kemudiannya boleh menjalankan kod pelanggan terus untuk melancarkan aplikasi JavaFX.

Selepas program berjalan, pelanggan akan mewujudkan sambungan dengan pelayan, dan mesej gesaan "Disambungkan ke pelayan" akan dicetak pada konsol. Kemudian, kita boleh memilih fail untuk dimuat naik melalui pemilih fail pada antara muka dan klik butang "Muat Naik". Pelanggan akan menghantar fail yang dipilih ke pelayan dan mencetak mesej gesaan "Fail dimuat naik: laluan fail" pada konsol. 🎜🎜4. Ringkasan🎜🎜Artikel ini memperkenalkan cara menggunakan Java untuk membangunkan fungsi pemindahan fail Websocket, dan menyediakan contoh kod khusus untuk pelayan dan pelanggan. Melalui komunikasi dua hala dan sifat masa nyata protokol Websocket, kami dapat mencapai pemindahan fail yang cepat, cekap dan selamat. Saya percaya pembaca boleh meneroka dan menggunakan teknologi pemindahan fail Websocket dengan lebih lanjut berdasarkan kod sampel yang disediakan dalam artikel ini. 🎜

Atas ialah kandungan terperinci Cara menggunakan Java untuk membangunkan fungsi pemindahan fail Websocket. 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