gửi và nhận tập
Việc gửi và nhận của một tập tin cơ bản bị phá vỡ để hai miếng mã đơn giản.
đang recieving:
ServerSocket serverSoc = new ServerSocket(LISTENING_PORT);
Socket connection = serverSoc.accept();
// code to read from connection.getInputStream();
đang gửi:
File fileToSend;
InputStream fileStream = new BufferedInputStream(fileToSend);
Socket connection = new Socket(CONNECTION_ADDRESS, LISTENING_PORT);
OutputStream out = connection.getOutputStream();
// my method to move data from the file inputstream to the output stream of the socket
copyStream(fileStream, out);
Miếng gửi mã sẽ được chạy trên máy tính đang gửi mã khi họ muốn gửi một tập tin.
Mã nhận cần phải được đặt bên trong một vòng lặp, để mỗi khi ai đó muốn kết nối với máy chủ, máy chủ có thể xử lý yêu cầu và sau đó quay lại chờ trên serverSoc.accept().
Để cho phép gửi tệp giữa hai máy tính, mỗi máy tính sẽ cần chạy máy chủ (mã nhận) để nghe các tệp đến và cả hai đều cần phải chạy mã gửi khi họ muốn gửi tệp.
Progress Bar
Các JProgressBar
trong Swing là đủ dễ sử dụng.Tuy nhiên, làm cho nó hoạt động đúng và cho thấy tiến độ hiện tại của việc chuyển tập tin là hơi khó khăn hơn.
Để có thanh tiến trình hiển thị trên biểu mẫu chỉ cần thả thanh đó vào một số JFrame
và có thể đặt setIndeterminate(false)
để mũ cho thấy chương trình của bạn đang hoạt động.
Để triển khai thanh tiến trình một cách chính xác, bạn sẽ cần phải tạo triển khai của riêng mình là SwingWorker
. Các hướng dẫn Java có một ví dụ tốt về điều này trong lesson in concurrency của chúng.
Đây là một vấn đề khá khó khăn. Tôi muốn khuyên bạn nên hỏi điều này trong câu hỏi riêng của nó nếu bạn cần thêm trợ giúp với nó.
Bạn đang đẩy hoặc kéo tệp? Tải lên hoặc tải xuống? –