1. Trang chủ
  2. » Tất cả

Đồ án ứng dụng nâng cao client server nhỏ mô phỏng một chương trình FTP

18 296 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 18
Dung lượng 5,74 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Cơ chế làm việc của chương trình là từ tang ứng dụng nơi chương trình được cải đặt và làm việc, chương trình sẽ truyền các gói tin được chia nhỏ từ một file, rồi từ đó các tầng mạng tiếp

Trang 1

TRUONG DAI HOC QUY NHON

KHOA TIN HOC

Giáo viên : Lê Văn Tuấn

Nguyễn Thanh Bình

Lê Ngọc Hùng Phạm Giang Trường Quốc Phan Thanh Quý

Trần Thị Hà Tuyên

Quy Nhơn 06/2005

Đồ án kết thúc môn học: Thực hành nâng cao - Nhóm 3

Trang 2

MUC LUC

Lop information Lop packageData Lop Client

Lop Service Client

Lớp Server Lớp dataResume Lớp myCellRenderer

Lớp my lree Lớp my Vector

j Lớp Tree server

7 Cách sử dụng chương trình - - - - - - - -c c c s3 23369680 133 1535131555532

8 Thành viên nhÓIm - - - - - - << c Ă c 3 63 680686839368 899681133 8591935 5558s32

Đồ án kết thúc môn học: Thực hành nâng cao - Nhóm 3

0801 ö›°ó

Giao diện chương frÌnH . - c5 2 2666663331311 1511115115111155151 555 Các tính năng chính của chương trình MytinyF TP - - Giao thức cài đặt và các bước hoạt động của chương trình

Cài đặt các lớp và các phương thức trong chương trình

Trang 3

I Gidi thiệu

FTP (File transfer Protocol) được biết đến như một giao thức truyền file nổi tiếng

trong cac mang TCP/IP Voi cac chương trình có cùng tên kèm theo trong các hệ điệu

hành có hồ trợ TCP/IP như Linux, Unix, Windows 2000/XP người sử dụng có thê lây

các file trên máy chủ ở xa, cũng như upload file lên máy chủ một cách dê dàng

Khi sử dụng FTP, phần mềm FTP trên máy cục bộ phải được kết nối đến phần mém

FTP trên máy ở xa, nơi bạn muốn lấy file về hay tải lên đó Thông thường thì người

dùng phải được cấp một tài khoản mới truy cập được vào máy ở xa Nhưng cũng trong

đa số các trường hợp người dùng không cần phải được cấp tải khoán trước mà có thể

dùng tài khoản vô danh (Anonymous Account), voi cdc han chế về truy cập tài nguyên

Trong đồ án kết thúc môn học “Thực hành nâng cao” này, nhóm 3 đã viết một ứng

dụng client/server nhỏ mô phỏng một chương trình FTP với một sô chức năng đơn giản:

MyTinyF TP Chương trình được cài đặt băng ngôn ngữ Java

H Giao diện của chương trình

tổ MyTinyFTP - Version 10 7777777777777 50750000 0n vn hư nàn hân hàn tư Tư cty tớ vn ni [x]

Host [localhost | Part |1 805 | Connect

-Local FileSystern- Remote Connection

DATã (62 ~ |m||#| |ci| [B8] z=|

(J Baita (1 Pictures

P LFl My Documents x [ Ban ran (J RECYCLED ==

[nata (1 Softwares ELwic

(J Documents write My ee

(J Duong [4 thoitrany_0001.wma A My Music

Gil Fbook i by Eachaae

(4 FTPRoat (1 Phim lien THẬN 15-5-2005 L1 bzip?

2 Music Beis (binh).doc ry = |

Exit

Đồ án kết thúc môn học: Thực hành nâng cao - Nhóm 3 3

Trang 4

Chương trình khi chưa kêt nội với Server sẽ cĩ giao diện như trên Vì chưa kết nơi

với Server nên bên phía cửa sơ Client vân là các file trên máy cục bộ Khi client kêt nơi

VỚI server, cửa sơ bên server sẽ hiên thị danh sách file của máy chủ:

TẾŸ MyTimtTP - Version 1.11 -

-Local HleSystem Remote Connection

DATA (G2) me | [ca | | Bố Refresh | @ Explorer ‘_) Tree

CL Data (3) Softwares CJ boi so cua 1024

(4 Documents E lwnite hehe

[ Duong [D thạtrang_0001.wma (4 New Folder :|

4 chook TT] New Folder? A

(4 Linh tinh L] Client.class 5

Remove Remove

Remaveal | RemavsAll

Connected with localhost successfull

Working port number: 1905 Copyright by Group 3 - THBQQ-

Exit

Người dùng cĩ thê chuyển chế độ hiện thị dạng cây thư mục bên cửa sơ server:

` Lá

Đồ án kêt thúc mơn học: Thực hành nâng cao - Nhĩm 3

Trang 5

2 MyTinyFTP - Version 1.0 =~

Host localhost ‘Port 1905 | Disconnect |

Local FileSystem Remote Connection

a - -

Õ Haitan (1 Pictures ® C4 Test

(J Documents EI write ? [hehe

(J Duong [* thoitrang_0001.wma # Co backup

a Ba ngon nentung ling 0001 wmy

(J Ebook

ry Duyen may va su lua chon.doc (i FIPRoot L1 furtinn nrarlin-[I.4.0.dnr

(GHOST ® (9 New Folder

EE Musir ® (4 New Folder?

(74 Nese Folder Select Select

Remove Remove |

SEND Ì GET

HL Cac tinh nang chinh cia chuong trinh MyTinyFTP

Chương trình MyTinyFTP gồm có những chức năng chính sau:

e Cho phép gửi/nhận một/nhiều file hoặc thư mục từ máy trạm đến máy chủ ở xa

(thông qua mạng cục bộ)

e Cho phép nhiều Client cùng kết nối đến một Server trong quá trình vận hành

chương trình

e Hỗ trợ chức năng resume trong trường hợp bị ngắt kết nối bất thường khi đang

truyện một file từ Client lên Server và ngược lại

e© Với hai danh sách chọn file tương ứng với hai phía Client và Server người dùng

có thê thao tác với nhiêu file/thư mục ở nhiêu nơi khác nhau đê tải về Client

hoặc chép lên Server

Đồ án kết thúc môn học: Thực hành nâng cao - Nhóm 3 5

Trang 6

e Với chức năng Tree bên phía Server, người dùng có thê để dàng hình dung được tông thê toàn bộ câu trúc file cũng như thư mục bên phía Server mà mình được phép truy nhập, và cũng có thê dê dàng chọn file/thư mục từ đây

e Cho phép thiét lập linh động thư mục gốc (FTPRoot) bên Server mà người dùng được phép truy cập vào

e©_ Ngoài ra còn cho phép người dùng linh động với nhiều tuỳ chọn trong lúc khởi động chương trình

IV Giao thức được cài đặt và các bước hoạt động của chương trình

Một hệ thống client/server luôn phải cài đặt một giao thức bên trong nó, với chương trình này giao thức được cài đặt là TCP Với đặc tính là một giao thức hướng liên kết (connection-orienteđ), ôn định và chính xác nên TCP rất thích hợp cho việc truyền tải file qua mạng, tuy nhiên chính ưu điểm này khiến cho nó tiêu tốn khá nhiều tài nguyên mạng Cơ chế làm việc của chương trình là từ tang ứng dụng (nơi chương trình được cải đặt và làm việc), chương trình sẽ truyền các gói tin được chia nhỏ từ một file, rồi từ đó các tầng mạng tiếp tục xử lý các gói tin đó để chuyền qua mạng cho máy nhận

Hoạt động của chương trình như sau:

Server sẽ hoạt động và lang nghe trên một công mặc định (hoặc do người dùng quy định), và để Client có thể kết nối được với Server thì cần phải cung cấp cho Client biết tên của máy chủ cũng như công mà máy chủ làm việc

Khi Server được khởi động, nó sẽ tạo ra một file LOG (nếu chưa có) để ghi lại các lỗi có thể xảy ra trong quá trình làm việc Sau đó server sẽ chạy vào một vòng lặp vô tận chờ Client gửi các yêu cầu (hợp lệ) lên Trong chương trình, các yêu cầu sau là yêu cầu hợp lệ:

Send Nhận file từ Client gửi lên

Get Load file tir server vé may Client

Ngai Ngắt kết nối

Chuyenthumuc chuyên thư mục hiện hành

Yeucauresume Yêu câu resume trong trường hợp upload

Yeucauloadtiep Yêu cầu resume trong trường hợp download

Đồ án kết thúc môn học: Thực hành nâng cao - Nhóm 3 6

Trang 7

layJTree_JTable Cap nhat khung duyét va cay

layJTree Cap nhat cay

layJTable Cap nhat khung duyét

Khi Client kết nối thành công với Server, trước tiên nó sẽ gửi yêu cầu layJTree_JTable đến Server lẫy danh sách file trong FTPRoot để hiến thị lên giao diện bên Client Sau đó Client sẽ tạo file LOG bén Client nếu nó chưa tôn tại, còn nếu đã có file Log rồi thì Client sẽ kiểm tra xem có cần Resume không (xét cả hai trường hợp upload và download) bằng cách kiểm tra các file log Nếu trong lần kết nối trước đó, chương trình bị ngắt kết nỗi bất thường trong khi truyền chưa xong một file nào đó thì chương trình sẽ hỏi người dùng xem có muôn tiếp tục truyền hoàn thành file đó không; nêu câu trả lời nhận được là có thì chương trình sẽ tiến hành Resume

Quá trình truyền một file diễn Ta như sau: đầu tiên chương trình sẽ lẫy thông tin của file cân truyện, sau đó tình toán số lượng cũng như kích thước các gói sẽ được chia nhỏ

ra dé truyền qua mạng Tên file cùng với các thông tin phụ sẽ được gửi đi trước, bên nhận sẽ kiểm tra sự tôn tại của file sắp được chuyền có có trong thư mục hiện tại hay không Sau quá trình kiểm tra và xác nhận của người dùng (nếu cần thiếu, chương trình

sẽ tiễn hành gửi các gói dữ liệu đi Trong quá trình nhận các gói tin, nêu có lỗi xảy ra, ngay lập tức file mới được đóng lại và thông tin của lần truyện file bị lỗi này sẽ được lưu vào file log để phục vụ cho quá trình resume trong lần kết nối sau

Tất cả các lỗi cũng như các thông báo của chương trình trong quá trình vận hành được hiện thị trong khung Status Riêng những lỗi trong lúc khởi động sẽ hiện thị trên màn hình Console

V Các khó khăn kỹ thuật đã giải quyết

Trong qua trình cài đặt chương trình, một vẫn đề khó khăn nổi lên là làm sao nhận biết được ranh giới giữa các gói tin cũng như các thông điệp trong luồng nhập cũng như luong xuất Và khi tiến hành truyền nhiều file hoặc truyền một thư mục (không rỗng) thi vẫn dé là làm sao biết được ranh giới đữ liệu giữa các file với nhau trong luồng Với cách làm thông thường xử lý từng byte một thì việc này đòi hỏi cần phải có một sự kiểm soát luồng cực kỳ chặt chẽ (chặt chẽ đến từng byte một) thi MỚI CÓ thé dam bao cho chương trình vận hành ôn định Một giải pháp khác là ta không tiến hành gửi/nhận các byte mà ta sẽ gửi/nhận một đối tượng Như vậy thì tất cá mọi thông tin muốn gửi qua mạng ta chỉ cần “đóng gói” chúng vào một đối tượng và chuyển chúng vào luồng

Ở đầu bên kia của luồng, ta lại đọc ra nguyên một đối tượng với đầy đủ dữ liệu cũng như các phương thức được xây dựng sẵn của đối tượng đó, rất thuận tiện cho việc thao tác đữ liệu Hơn nữa một “gói” (đối tượng) có thể chứa nhiều cả về loại lẫn số lượng

Đồ án kết thúc môn học: Thực hành nâng cao - Nhóm 3 7

Trang 8

các dữ liệu nên ta có thể gộp nhiều thông tin vào một gói và gửi đi một lần, dễ dàng hơn trong việc kiểm soát luồng Đề có thể truyền được các đối tượng qua mạng thì các đối tượng này phải được cài đặt (implements) giao diện Serializable Các đối tượng loại này trong chương trình gồm có:

e packageData : gói chứa dữ liệu được chia nhỏ từ các file cùng một số thông tin liên quan

e Information : gói chứa thông tin của file sẽ được truyền đi

e myTree : ĐÓI tạo cây

e Trec server : gói phục vụ quá trình tạo cây

e myVector : gói chứa danh sách file bên Server gửi qua cho Client

e dataResumc : gói phục vụ cho quá trình resume

Một khó khăn nữa là việc hiển thị danh sách các file ở Server trên máy Client Vì việc sử dụng đối tượng JFileChooser trở nên phức tạp trong trường hợp này, nên việc lựa chọn đối tượng sử dụng cũng như hình thức thê hiện gặp nhiều khó khăn, vướng mắc Mỗi một thành phần (componenf) có một ưu thế cũng như nhược điểm riêng trong

việc thể hiện danh sách file của Server Giải pháp được đưa ra là tích hợp nhiều thành

phan dé cho phép người sử dụng tuỳ chọn trong quá trình sử dụng Trong chương trình thì hai thành phân da duoc str dung la: JTree va JList Dé co thé load được các icon trong JList, d6i tuong JList phai duoc setCell/Renderer voi d6i sé cua phuong thitc nay

là một đối tượng kiểu Cel/Renderer (va cu thé trong chương trình này là lớp myCellRenderer được kê thừa từ lớp ListCeliRenderer)

Việc lựa chọn loại của luông (nhập/xuất), cũng như các phương thức đọc/ghi cũng gặp nhiều van đề Bởi vì nếu sử dụng không đúng thì dữ liệu sau khi chuyên qua mạng

sẽ bị hỏng cấu trúc, không sử dụng được Vấn đề này được giải quyết chỉ băng kinh nghiệm và sự thử nghiệm các luông cũng như các phương thức đê kiêm tra

VI.Cài đặt các lớp và phương thức trong chương trình

Chương trình bao gồm I1 lớp với các chức năng chính của từng lớp được tóm tắt trong bảng sau:

Client là lớp chính bên phía máy khách, thực hiện các chức năng

truyện tải file cũng như hiên thị giao diện

Server là lớp thực thi bên phía máy chủ, có chức năng tạo ra các

luong cho moi Client nôi vào

Đồ án kết thúc môn học: Thực hành nâng cao - Nhóm 3 8

Trang 9

Service Client là lớp chính bên phía máy chủ, thực hiện các chức năng

truyền tải file

packageData là gói chứa thông tin và dữ liệu (được chia nhỏ ra từ các

file) đê truyền qua mạng

dataResume là gói chứa thông tin của file cần được resume

information chứa thông tin của file sẽ được truyền qua mang

myCellRenderer lớp phục vụ cho việc hiện thị cac icon trong đối tuong JList

myTree lớp phục vụ cho việc truyền đối tuong JTree qua mang

my Vector lớp phục vụ cho việc truyền đối tượng Vector qua mạng

Tree server lớp dùng để tạo đỗi tượng JTree

Vector _server lớp phục vụ cho việc trình bày các file và thư mục của

Server bén Client (sap xêp trình bày theo loại)

1 Lớp information

Lớp này dùng để chứa các thông tin của một file/thư mục chuẩn bị được truyền qua mạng Do phải truyền qua mạng nên lớp này phải implements lớp Serializable Lớp bao gồm có 4 thuộc tính cùng với các phương thức set/get cho mỗi thuộc tính này Ý nghĩa của các thuộc tính:

e Stringten :chứa tên của file/thư mục chuẩn bị được truyền qua

e Stringloai :xác định thông tim gửi là một file hay là thư mục

e ¡intsoluong :xác định số lượng file/thư mục con trong thư mục được gửi

qua (trong trường hợp đôi tượng gửi qua là thư mục)

e Stringpath :chứa vị trí của đối tượng (file/thư mục) trên máy gửi (dùng

cho chức năng Resume) Lớp này được dùng trong các phương thức gử1/nhận file của hai lop Client và Service_Client

Lớp packageData

Lớp này dùng để chứa dữ liệu cùng với các thông tin liên quan để chuyển qua mạng Dữ liệu chứa trong các gói chính là dữ liệu của các file được “cắt” nhỏ ra để chuyên qua mạng Lớp bao gém có 4 thuộc tính cùng với các phương thức set/get cho mỗi thuộc tính này Ý nghĩa của các thuộc tính:

Đồ án kết thúc môn học: Thực hành nâng cao - Nhóm 3 9

Trang 10

e byte[] dulieu : mảng chứa đữ liệu

e int kichthuoc : kích thước thật sự của mảng dữ liệu

e booleangoicuoi : xác định gói được chuyên có phải là gói cuối cùng

của một file hay không

e int goiso : thứ tự của gói được chuyên

Phương thức khởi tạo có một đối số là: kích thước đữ liệu tối đa mà một gói

có thê chứa trong một lân gửi đi Lớp này được dùng trong các phương thức gửi file của các lop Client va Service_Client

3 Lớp dataResume

Lớp nay dung dé chứa các thông tin phục vụ cho việc Resume Khi một client kết nối với server, nếu có yêu cầu cần Resume thì các thông tin Resume sẽ được chuyển qua lại giữa các máy bằng gói này Lớp bao gồm có 2 thuộc tính cùng với các phương thức get cho mỗi thuộc tính này Phương thức khởi tạo của lớp có 2 đối số, chính là các giá trị khởi tạo cho các thuộc tính này Y nghĩa của các thuộc tính:

e String path : đường dẫn của file trên máy gửi

e int goiso : là gói truyền bị lỗi, nếu resume thì cần gửi bắt đầu từ gói

này trở đi

4 Lớp myCellRenderer

Lớp này là lớp “chức năng” phục vụ cho việc load icon (để phân biệt đâu là thư mục, đâu là file) trong thành phần JList Lớp này kế thừa (extends) lớp JLabel

và “thực thi” (implements) lớp ListCellRenderer, bởi vì ta dùng cả hình ảnh (icon) lẫn văn bản đề hiển thị trong mỗi ô của JList ListCellRenderer là một giao diện đơn giản chỉ có một phương thức:

public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus)

Phương thức này được gọi mỗi khi đối tượng JList muốn hiển thị 6 trong

thành phân danh sách Ta quan tâm đên đôi sô thứ 2 đê xác định ô đó thê hiện file hay thư mục đề load Icon tương ứng

File f = (File)value;

if(f.isDirectory())

setIcon(new Imagelcon("images"+File.separator+"folder_icon.gif"));

else

setIcon(new Imagelcon("images"+File.separator+"file_icon.gif"));

Đồ án kết thúc môn học: Thực hành nâng cao - Nhóm 3 10

Ngày đăng: 14/12/2021, 19:50

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w