Xây dựng phương trình lập trình SOCKET TCP - Kỹ thuật lập trình | Đại học Bách Khoa, Đại học Đà Nẵng

Xây dựng phương trình lập trình SOCKET TCP - Ki thuật lập trình | Đại học Bách Khoa, Đại học Đà Nẵng giúp sinh viên tham khảo, ôn luyện và phục vụ nhu cầu học tập của mình cụ thể là có định hướng, ôn tập, nắm vững kiến thức môn học và làm bài tốt trong những bài kiểm tra, bài tiểu luận, bài tập kết thúc học phần, từ đó học tập tốt và có kết quả cao cũng như có thể vận dụng tốt những kiến thức mình đã học

Xây dựng chương trình FTP
LỜI CẢM ƠN
Đầu tiên chúng em chân thành cảm ơn đến Thầy cô khoa Công Nghệ Thông Tin,
trường đã tạo điều kiện cho chúng em trong quá trìnhĐại học Bách Khoa Đà Nẵng
thực hiện đồ án.
Chúng em xin nói nên lời cảm ơn sâu sắc tới TS.Phạm Minh Tuấn. Chúng em
xin chân thành cảm ơn Thầy đã quan tâm tận tình hướng dẫn chúng em trong quá
trình thực hiện đồ án.
Chúng em cũng xin gửi lòng cảm ơn bạn bè trong lớp, động viên tinh thần chúng
em rất nhiều trong suốt quá trình thực hiện đồ án này.
Mặc đã cố gắng hoàn thành đồ án trong phạm vi khả năng cho phép
nhưng chắc chắn sẽ không tránh khỏi những thiếu sót, kính mong nhận được sự góp ý
và tận tình chỉ bảo của các Thầy cô và các bạn.
Một lần nữa, xin chân thành cám ơn mong luôn nhận được những tình cảm
chân thành của tất cả mọi người.
Đà Nẵng, ngày 20 tháng 12 năm 2012
Đặng Quang Vũ
Đỗ Văn Thanh Nho
Đặng Quang Vũ – Đỗ Văn Thanh Nho – 11TLT.CNTT Trang 1
Xây dựng chương trình FTP
NHẬN XÉT CÁN BỘ HƯỚNG DẪN
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
Đà Nẵng, ngày tháng năm
Đặng Quang Vũ – Đỗ Văn Thanh Nho – 11TLT.CNTT Trang 2
Xây dựng chương trình FTP
MỤC LỤC
LỜI MỞ ĐẦU...............................................................................................................7
CHƯƠNG 1: LẬP TRÌNH SOCKET TCP...................................................................9
1.1.Định nghĩa...........................................................................................................9
1.2.Mô hình clients/server sử dụng socket ở chế độ hướng kết nối TCP.................11
1.3.Lập trình Socket TCP trong Java.......................................................................14
1.3.1.Xây dựng chương trình clients ở chế độ hướng kết nối..............................15
1.3.2.Xây dựng chương trình server ở chế độ hướng kết nối...............................16
CHƯƠNG 2: FILE TRANSFER PROTOCOL...........................................................19
2.1.Giới thiệu..........................................................................................................19
2.2.Mục đích của giao thức FTP.............................................................................21
2.3.Những phê bình về giao thức FTP.....................................................................21
2.4.Các loại kết nối.................................................................................................23
2.4.1.Active FTP.................................................................................................23
2.4.2.Passive FTP................................................................................................23
2.5.Tìm hiểu các hệ thống FTP có sẵn.....................................................................24
2.5.1.FTP Client..................................................................................................24
2.5.2.FTP Server..................................................................................................25
2.5.3.Giao thức FTP............................................................................................26
CHƯƠNG 3: PHÂN TÍCH THIẾT KẾ CHƯƠNG TRÌNH........................................28
3.1.Sơ đồ biều diễn quá trình xử lý các chức năng..................................................28
3.1.1.Sơ đồ tổng quát:.........................................................................................28
3.1.2.Sơ đồ chức năng:........................................................................................28
3.1.3.Sơ đồ biểu diễn qúa trình xử lý chi tiết các chức năng...............................30
a.Sơ đồ biểu diễn qúa trình xử lý của Server...................................................30
b.Sơ đồ biểu diễn qúa trình xử lý của Client trên cơ sở các thành phần giao
diện đồ hoạ (GUI)...........................................................................................33
c.Sơ đồ biểu diễn việc quản trị các user trên hệ thống.....................................41
3.2.Lưu đồ thuật toán..............................................................................................45
3.2.1.Lưu đồ giải thuật cho qúa trình xử lý của FTP Server................................45
3.2.2.Lưu đồ giải thuật cho qúa trình xử lý của FTP Client.................................47
Đặng Quang Vũ – Đỗ Văn Thanh Nho – 11TLT.CNTT Trang 3
Xây dựng chương trình FTP
3.2.3.Lưu đồ giải thuật cho việc quản trị các user trên hệ thống.........................54
CHƯƠNG 4: GIỚI THIỆU CHƯƠNG TRÌNH..........................................................58
4.1.Giới thiệu tổng quan chương trình:...................................................................58
4.2.So sánh với FTP Server FileZilla:.....................................................................61
4.2.1.Giới thiệu FTP Server FileZilla:.................................................................61
4.2.2.So sánh:......................................................................................................62
TỔNG KẾT.................................................................................................................64
TÀI LIỆU THAM KHẢO...........................................................................................66
Đặng Quang Vũ – Đỗ Văn Thanh Nho – 11TLT.CNTT Trang 4
Xây dựng chương trình FTP
DANH MỤC CÁC HÌNH V
Hình 1.1.1.Mô hình OSI dạng rút gọn................................................................................
Hình 1.1.2.Số hiệu cổng của một số dịch vụ nổi tiếng.....................................................
Hình 1.2.1.Server tạo socket, bind, listen ........................................................................
Hình 1.2.2.Client tạo socket yêu cầu kết nối....................................................................
Hình 1.2.3.Trao đổi thông tin giữa Client và Server.........................................................
Hình 1.2.4.Kết thúc phiên làm việc..................................................................................
Hình 1.2.5.Toàn bộ quá trình làm việc.............................................................................
Hình 2.4.1.Actice FTP
Hình 2.4.2.Passive FTP
Hình 2.5.3.Một phiên làm việc FTP thông thường6
Hình 3.1.1.Sơ đồ hoạt động tổng quát8
Hình 3.1.2.Sơ đồ chức năng chương trình9
Hình 3.1.3.1.Sơ đồ quá trình xử lý của Server30
Hình 3.1.3.2.Sơ đồ kiểm tra đăng nhập từ Client30
Hình 3.1.3.3.Sơ đồ xử lý đăng nhập31
Hình 3.1.3.4.Sơ đồ xử lý yêu cầu của Client
Hình 3.1.3.5.Xử lý của Client trên giao diện đồ họa33
Hình 3.1.3.6.Xử lý Connect..............................................................................................
Hình 3.1.3.7. Delete Client...............................................................................................
Hình 3.1.3.8. Upload Client..............................................................................................
Hình 3.1.3.9. Download Client.........................................................................................
Hình 3.1.3.10.Xử lý hàng đợi Client................................................................................
Hình 3.1.3.11.Xử lý Upload.............................................................................................
Hình 3.1.3.12.Xử lý Download........................................................................................
Hình 3.1.3.13.Xử lý Disconnect.......................................................................................
Hình 3.1.3.14.Quản trị User trên hệ thống........................................................................
Hình 3.1.3.15.Thêm User.................................................................................................
Hình 3.1.3.16.Xóa User....................................................................................................
Hình 3.1.3.17.Cập nhập Diraccess...................................................................................
Hình 3.2.1.1.Lưu đồ xử lý đăng nhập Server....................................................................
Đặng Quang Vũ – Đỗ Văn Thanh Nho – 11TLT.CNTT Trang 5
Xây dựng chương trình FTP
Hình 3.2.1.2.Lưu đồ xử lý yêu cầu của Client..................................................................
Hình 3.2.2.1.Lưu đồ xử lý Connect..................................................................................
Hình 3.2.2.2.Lưu đồ xử lý Delete.....................................................................................
Hình 3.2.2.3.Lưu đồ xử lý Upload....................................................................................
Hình 3.2.2.4.Lưu đồ xử lý Download...............................................................................
Hình 3.2.2.5.Lưu đồ xử lý hàng đợi.................................................................................
Hình 3.2.2.6.Lưu đồ xử lý Upload Server........................................................................
Hình 3.2.2.7.Lưu đồ xử lý Download Server...................................................................
Hình 3.2.2.8.Lưu đồ xử lý Disconnect.............................................................................
Hình 3.2.3.1.Lưu đồ thêm User........................................................................................
Hình 3.2.3.2.Lưu đồ xóa User..........................................................................................
Hình 3.2.3.3.Lưu đồ xử lý cập nhập Diraccess.................................................................
Đặng Quang Vũ – Đỗ Văn Thanh Nho – 11TLT.CNTT Trang 6
Xây dựng chương trình FTP
LỜI MỞ ĐẦU
Ngày nay cùng với sự phát triển chóng mặt của khoa học kỹ thuật, một kỷ
nguyên mới được mở ra kỷ nguyên của công nghệ thông tin. Nhu cầu của con người
càng lớn đặc biệt các ngành khoa học kỹ thuật khác đều cần đến sự hỗ trợ của công
nghệ thông tin. Mọi người đếu có nhu cầu truy cập internet để cung cấp cũng như lấy
những thông tin cần thiết qua các máy chủ.
Với những lý do trên em xin chọn đề tài “Xây dựng chương trình FTP”.
Người sử dụng chương trình là người có nhu cầu truyền nhận file bằng giao thức
FTP (File Transfer Protocol) thông qua mạng Internet.
Trong môi trường Internet, khi cần truyền nhận file các file có kích thước lớn
trên vài chục KB người sử dụng thường gặp trường hợp việc truyền nhận file bị gián
đoạn. dụ khi lấy một file bằng giao thức FTP sử dụng chương trình Internet
Explorer, người sử dụng thường gặp thông báo lỗi sau vài phút download file.
Để giải quyết vấn đề này, người sử dụng thường sử dụng các chương trình
chuyên dùng để lấy file như ReGet để có thể tiếp tục lấy file từ vị trí xảy ra lỗi.
Người sử dụng xu hướng lấy đồng thời nhiều file tại một server nào đó trên
Internet. Như vậy chương trình phải hỗ trợ lấy nhiều file đồng thời. Tuy nhiên không
phải lúc nào chương trình cũng thể lấy đồng thời nhiều file tại một site nếu server
hạn chế số kết nối đồng thời tới một địa chỉ IP.
Người sử dụng cũng có nhu cầu lấy file bằng nhiều giao thức khác nhau như FTP
(File Transfer Protocol), HTTP (HyperText Transfer Protocol), …
Tuy nhiên trong phạm vi của luận văn này chúng em chỉ có thể hỗ trợ được việc
lấy file bằng giao thức FTP.
Mặt khác chương trình cũng phải tạo sự tiện lợi cho người sử dụng. Chương
trình phảigiao diện đồ họa thân thiện, giúp cho người sử dụng xem được nội dung
Đặng Quang Vũ – Đỗ Văn Thanh Nho – 11TLT.CNTT Trang 7
Xây dựng chương trình FTP
các thư mục từ xa cục bộ. Từ đó giúp cho việc upload download dễ dàng hơn.
Chương trình cũng phải hiện thực một số chức năng bản của một FTP client
download, upload,…
Mục tiêu:
- Khuyến khích việc chia sẻ file.
- Giúp đỡ việc sử dụng gián tiếp(thông qua các chương trình) các máy tính từ xa.
- Che thông tin người sử dụng khỏi những thay đổi trong các hệ thống lưu trữ
file giữa các máy chủ(host).
- Truyền dữ liệu một cách tin cậy và hiệu quả.
- Tạo một ứng dụng FTP chạy trên bất kỳ máy nào.
- Nghiên cứu tìm hiểu về lập trình socket TCP
- Nghiên cứu về ngôn ngữ lập trình java
Đặng Quang Vũ – Đỗ Văn Thanh Nho – 11TLT.CNTT Trang 8
Xây dựng chương trình FTP
CHƯƠNG 1: LẬP TRÌNH SOCKET TCP
1.1.Định nghĩa
Có nhiều định nghĩa khác nhau về tùy theo cách nhìn của người sử dụng: socket
Một cách tổng quát nhất thể định nghĩa: một socket một điểm cuối trong
một kết nối giữa hai chương trình đang chạy trên mạng.
Nhìn trên quan điểm của người phát triển ứng dụng người ta thể định nghĩa
socket một phương pháp thiết lập kết nối truyền thông giữa một chương trình yêu
cầu dịch vụ (được gán nhãn clients) một chương trình cung cấp dịch vụ (được
gán nhãn là server) trên mạng hoặc trên cùng một máy tính.
Ðối với người lập trình, họ nhìn nhận socket như một giao diện nằm giữa tầng
ứng dụng và tầng khác trong mô hình mạng OSI, có nhiệm vụ thực hiện việc giao tiếp
giữa chương trình ứng dụng với các tầng bên dưới của mạng.
Hình 1.1.1. Mô hình OSI dạng rút gọn
Tuy nhiên, các lập trình viên hiện nay gần như luôn luôn bị ngăn cản tạo socket
riêng bằng cách thủ công, bởi dù bạn dùng Java hay PHP,…, có thể bạn sẽ không bao
giờ mở được cổng một cách tường minh. Thay vào đó các lập trình viên sẽ dùng thư
viện socket được hỗ trợ sẵn bởi các ngôn ngữ lập trình. Như vậy, các socket vẫn tồn
Đặng Quang Vũ – Đỗ Văn Thanh Nho – 11TLT.CNTT Trang 9
Xây dựng chương trình FTP
tại để kết nối các ứng dụng của người dùng, nhưng các chi tiết của socket được ẩn
trong những lớp sâu hơn để mọi người không phải động chạm đến.
Do là một thực thể phần mềm có chức năng nhận hoặc gửi dữ liệu đi trênsocket
kết nối giữa hai ứng dụng mạng nên khi cần sử dụng socket thì ứng dụng sẽ tạo ra
socket để dùng, khi không cần sử dụng nữa thì có thể huỷ bỏ socket.
Một được định danh bằng một cặp giá trị:socket
- Địa chỉ IP của máy tính có chương trình ứng dụng đã tạo ra socket
- Số hiệu cổng (port) mà socket dùng để nhận/gửi dữ liệu.
Khái niệm cổng: Cổng thực chất số hiệu của một chương trình ứng dụng đang
chạy trên một máy tính. Để hệ thốngthể theo dõi được các chương trình ứng dụng
đang chạy trên máy tính, hệ điều hành sẽ n cho mỗi ứng dụng đó một con số
(16bits) trong khoảng từ 0 đến 65535. Trong thực tế thì các số hiệu cổng từ 0 đến
1023 (gồm 1024 cổng) đã được dùng cho các dịch vụ nổi tiếng :
Hình 1.1.2. Số hiệu cổng của một số dịch vụ nổi tiếng
Nếu chúng ta không phải là người quản trị thì nên dùng từ cổng 1024 trở lên.
Vậy = Địa chỉ + Số hiệu socket IP Port
Đặng Quang Vũ – Đỗ Văn Thanh Nho – 11TLT.CNTT Trang 10
Xây dựng chương trình FTP
1.2.Mô hình clients/server sử dụng socket ở chế độ hướng kết nối TCP
Giai đoạn 1: Server tạo socket, gán số hiệu cổng và lắng nghe yêu cầu kết nối.
Hình 1.2.1.Server tạo socket, bind, listen
- socket(): Server yêu cầu tạo một socket để thể sử dụng các dịch vụ của tầng
vận chuyển.
- bind(): Server yêu cầu gán số hiệu cổng (port) cho socket.
- listen(): Server lắng nghe các yêu cầu kết nối từ clients trên cổng đã được gán.
Server sẵn sàng phục vụ clients.
Giai đoạn 2: Clients tạo socket, yêu cầu thiết lập một kết nối tới server.
Đặng Quang Vũ – Đỗ Văn Thanh Nho – 11TLT.CNTT Trang 11
Xây dựng chương trình FTP
Hình 1.2.2.Client tạo socket yêu cầu kết nối
- socket(): Clients yêu cầu tạo một socket để có thể sử dụng các dịch vụ của tầng
vận chuyển, thông thường hệ thống tự động gán một số hiệu cổng còn rảnh cho socket
của clients.
- connect(): Clients gửi yêu cầu nối kết đến server có địa chỉ IP và Port xác định.
- accept(): Server chấp nhận kết nối của clients, khi đó một kênh giao tiếp ảo
được hình thành, clients và server có thể trao đổi thông tin với nhau thông qua kênh ảo
này.
Giai đoạn 3: Trao đổi thông tin giữa clients và server
Hình 1.2.3.Trao đổi thông tin giữa Client và Server
- Sau khi chấp nhận yêu cầu kết nối, thông thường server thực hiện lệnh read()
và nghẽn cho đến khi có thông điệp yêu cầu ( ) từ clients gửi đến. Request Message
- Server phân tích thực thi yêu cầu, kết quả sẽ được gửi về clients bằng lệnh
write().
Đặng Quang Vũ – Đỗ Văn Thanh Nho – 11TLT.CNTT Trang 12
Xây dựng chương trình FTP
- Sau khi gửi yêu cầu bằng lệnh , clients chờ nhận thông điệp kết quả write()
(Reply Message) từ server bằng lệnh read().
Giai đoạn 4 : Kết thúc phiên làm việc
Hình 1.2.4.Kết thúc phiên làm việc
- Các câu lệnh read(), write() có thể được thực hiện nhiều lần (ký hiệu bằng hình
ellipse).
- Kênh ảo sẽ bị xóa khi server hoặc clients đóng socket bằng lệnh . close()
Như vậy toàn bộ quá trình diễn ra như sau :
Đặng Quang Vũ – Đỗ Văn Thanh Nho – 11TLT.CNTT Trang 13
Xây dựng chương trình FTP
Hình 1.2.5.Toàn bộ quá trình làm việc
1.3.Lập trình Socket TCP trong Java
Java hỗ trợ lập trình mạng thông qua các lớp trong gói . Một slớpjava.net
tiêu biểu được dùng cho lập trình clients/server sử dụng socket làm phương tiện giao
tiếp như:
: Lớp này biểu diễn địa chỉ Internet, quan trọng nhất haiInetAddress
phương thức dùng để chuyển đổi giữa địagetHostName() getAddress()
chỉ IP và tên máy tính.
: Hỗ trợ các phương thức liên quan đến socket cho chương trìnhSocket
clients ở chế độ hướng kết nối.
: Hỗ trợ các phương thức liên quan đến socket cho chươngServerSocket
trình server ở chế độ hướng kết nối.
Đặng Quang Vũ – Đỗ Văn Thanh Nho – 11TLT.CNTT Trang 14
Xây dựng chương trình FTP
: Hỗ trợ các phương thức liên quan đến socket chế độDatagramSocket
không hướng kết nối cho cả clients và server.
: Lớp cài đặt gói tin dạng thư tín người dùng trong giaoDatagramPacket
tiếp giữa clients và server ở chế độ không hướng kết nối.
1.3.1.Xây dựng chương trình clients ở chế độ hướng kết nối
Các bước tổng quát:
1. Mở một socket kết nối đến server đã biết địa chỉ IP (hay tên miền) và số hiệu
cổng
2. Lấy gán với socketInputStream OutputStream
3. Tham khảo protocol của dịch vụ để định dạng đúng dữ liệu trao đổi với
server
4. Trao đổi dữ liệu với server nhờ vào các InputStream
OutputStream
5. Đóng socket trước khi kết thúc chương trình
Lớp lớp socket hỗ trợ các phương thức cần thiết để xâyjava.net.Socket:
dựng các chương trình clients sử dụng chế độ hướng kết nối. Dưới đây một số
phương thức thường dùng để xây dựng clients
- public Socket(String HostName, int PortNumber) throws IOException:
phương thức này dùng để kết nối đến một server tên HostName, cổng
PortNumber. Nếu kết nối thành công, một kênh ảo sẽ được hình thành giữa clients
server.
+ HostName : địa chỉ IP hoặc tên logic theo dạng tên miền
+ PortNumber : có giá trị từ 0 đến 65535
Đặng Quang Vũ – Đỗ Văn Thanh Nho – 11TLT.CNTT Trang 15
Xây dựng chương trình FTP
dụ: mở socket kết nối đến Web Server của khoa công nghệ thông tin, đại
học Bách Khoa Đà Nẵng:
Socket s = new Socket ( );www.dut.edu.vn,80
- public InputStream getInputStream(): phương thức này trả về
InputStream InputStream nối với socket. Chương trình clients dùng này để
nhận dữ liệu từ server gửi về.
Ví dụ : lấy của socket s:InputStream
InputStream is = s.getInputStream();
- public OutputStream getOutputStream(): phương thức này trả về
OutputStream OutputStream nối với socket. Chương trình clients dùng này để
gửi dữ liệu cho server.
Ví dụ: Lấy của socket s :OutputStream
OutputStream os = s.getOutputStream();
- public close(): phương thức này sẽ đóng socket lại, giải phóng kênh ảo, xoá kết
nối giữa clients và server.
Ví dụ : Đóng socket s :
s.close();
1.3.2.Xây dựng chương trình server ở chế độ hướng kết nối
Lớp : hỗ trợ các phương thức cần thiết để xâyjava.net.ServerSocket
dựng các chương trình server sử dụng socket ở chế độ hướng kết nối. Dưới đây là một
số phương thức thường dùng để xây dựng server
- public ServerSocket(int PortNumber : phương thức này tạo một socket với số
hiệu cổng là PortNumber mà sau đó server sẽ lắng nghe trên cổng này
Đặng Quang Vũ – Đỗ Văn Thanh Nho – 11TLT.CNTT Trang 16
Xây dựng chương trình FTP
Ví dụ : tạo socket cho server với số hiệu cổng là 7 :
ServerSocket ss = new ServerSocket(7);
- public Socket accept() : phương thức này lắng nghe yêu cầu kết nối của clients.
Đây là một phương thức hoạt động ở chế độ nghẽn; nó sẽ bị nghẽn cho đến khi có một
yêu cầu kết nối của clients gửi đến. Khi yêu cầu kết nối của clients gửi đến, sẽ
chấp nhận yêu cầu kết nối, trả về một socket một đầu của kênh giao tiếp ảo giữa
server và clients yêu cầu kết nối.
Ví dụ: Socket ss chờ nhận yêu cầu nối kết :
Socket s = ss.accept();
Server sau đó sẽ lấy của socket mới s đểInputStream OutputStream
giao tiếp với clients.
Xây dựng chương trình server phục vụ tuần tự:
Một server thể được cài đặt để phục vụ clients theo hai cách: phục vụ tuần
tự hoặc phục vụ song song.
Trong chế độ phục vụ tuần tự, tại một thời điểm server chỉ chấp nhận một yêu
cầu kết nối, các yêu cầu kết nối của clients khác đều không được đáp ứng (đưa vào
hàng đợi ).
Ngược lại, trong chế độ phục vụ song song, tại một thời điểm server chấp nhận
nhiều yêu cầu kết nối và phục vụ nhiều clients cùng lúc
Trong phần này, ta sẽ tìm hiểu về chế độ phục vụ tuần tự của server, còn
chương tiếp sẽ tìm hiểu cụ thể về chế độ phục vụ song song (sau khi đã tìm hiểu về
Thread).
Các bước tổng quát của một server phục vụ tuần tự :
Đặng Quang Vũ – Đỗ Văn Thanh Nho – 11TLT.CNTT Trang 17
Xây dựng chương trình FTP
- Tạo socket và gán số hiệu cổng cho server
- Lắng nghe yêu cầu kết nối
- Với một yêu cầu kết nối được chấp nhận thực hiện các bước sau:
+ lấy gắn với socket của kênh ảo vừaInputStream OutputStream
được hình thành
+ lặp lại công việc sau:
Chờ nhận các yêu cầu (công việc)
Phân tích và thực hiện yêu cầu
Tạo thông điệp trả lời
Gửi thông điệp trả lời về clients
Nếu không còn yêu cầu hoặc clients kết thúc, đóng socket và quay lại
bước 2
Đặng Quang Vũ – Đỗ Văn Thanh Nho – 11TLT.CNTT Trang 18
Xây dựng chương trình FTP
CHƯƠNG 2: FILE TRANSFER PROTOCOL
2.1.Giới thiệu
FTP là chữ viết tắc của File Transfer Protocol – Giao thức truyền file. FTP là một
giao thức truyền file trên mạng dựa trên chuẩn TCP nên rất đáng tin cậy.
Hoạt động của FTP cần 2 máy tính, một máy chủ (Server) một máy khách
(Client) Máy chủ FTP, dùng chạy phần mềm cung cấp dịch vụ FTP, gọi trình chủ,
lắng nghe yêu cầu về dịch vụ của các máy tính khác trên mạng lưới. Máy khách chạy
phần mềm FTP dành cho người sử dụng dịch vụ, gọi trình khách, thì khởi đầu một
liên kết với máy chủ. Một khi hai máy đã liên kết với nhau, máy khách thể xử
một số thao tác về tập tin, như tải tập tin lên máy chủ, tải tập tin từ máy chủ xuống
máy của mình, đổi tên của tập tin, hoặc xóa tập tin ở máy chủ v.v. Vì giao thức FTP là
một giao thức chuẩn công khai, cho nên bất cứ một công ty phần mềm nào, hay một
lập trình viên nào cũng thể viết trình chủ FTP hoặc trình khách FTP. Hầu như bất
cứ một nền tảng hệ điều hành máy tính nào cũng hỗ trợ giao thức FTP. Điều này cho
phép tất cả các máy tính kết nối với một mạng lưới nền TCP/IP, xử tập tin trên
một máy tính khác trên cùng một mạng lưới với mình, bất kể máy tính ấy dùng hệ
điều hành nào (nếu các máy tính ấy đều cho phép sự truy cập của các máy tính khác,
dùng giao thức FTP). Hiện nay trên thị trường rất nhiều các trình khách trình
chủ FTP, và phần đông các trình ứng dụng này cho phép người dùng được lấy tự do,
không mất tiền
FTP thường chạy trên hai cổng, 20 21, chỉ chạy riêng trên nền của TCP.
Trình chủ FTP lắng nghe các yêu cầu dịch vụ từ những kết nối vào máy của các trình
khách FTP, trên cổng 21. Đường kết nối trên cổng 21 này tạo nên một dòng truyền
điều khiển, cho phép các dòng lệnh được chuyển qua trình chủ FTP.
Để truyền tải tập tin qua lại giữa hai máy, chúng ta cần phải có một kết nối khác.
Tùy thuộc vào chế độ truyền tải được sử dụng, trình khách (ở chế độ năng động -
active mode) hoặc trình chủ (ở chế độ bị động - passive mode) đều thể lắng nghe
yêu cầu kết nối đến từ đầu kia của mình. Trong trường hợp kết nối chế độ năng
Đặng Quang Vũ – Đỗ Văn Thanh Nho – 11TLT.CNTT Trang 19
| 1/66

Preview text:

Xây dựng chương trình FTP LỜI CẢM ƠN
Đầu tiên chúng em chân thành cảm ơn đến Thầy cô khoa Công Nghệ Thông Tin,
trường Đại học Bách Khoa Đà Nẵng đã tạo điều kiện cho chúng em trong quá trình
thực hiện đồ án.
Chúng em xin nói nên lời cảm ơn sâu sắc tới TS.Phạm Minh Tuấn. Chúng em
xin chân thành cảm ơn Thầy đã quan tâm và tận tình hướng dẫn chúng em trong quá
trình thực hiện đồ án.
Chúng em cũng xin gửi lòng cảm ơn bạn bè trong lớp, động viên tinh thần chúng
em rất nhiều trong suốt quá trình thực hiện đồ án này.
Mặc dù đã cố gắng hoàn thành đồ án trong phạm vi và khả năng cho phép
nhưng chắc chắn sẽ không tránh khỏi những thiếu sót, kính mong nhận được sự góp ý
và tận tình chỉ bảo của các Thầy cô và các bạn.
Một lần nữa, xin chân thành cám ơn và mong luôn nhận được những tình cảm
chân thành của tất cả mọi người.
Đà Nẵng, ngày 20 tháng 12 năm 2012 Đặng Quang Vũ Đỗ Văn Thanh Nho
Đặng Quang Vũ – Đỗ Văn Thanh Nho – 11TLT.CNTT Trang 1
Xây dựng chương trình FTP
NHẬN XÉT CÁN BỘ HƯỚNG DẪN
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
Đà Nẵng, ngày tháng năm
Đặng Quang Vũ – Đỗ Văn Thanh Nho – 11TLT.CNTT Trang 2
Xây dựng chương trình FTP MỤC LỤC
LỜI MỞ ĐẦU...............................................................................................................7
CHƯƠNG 1: LẬP TRÌNH SOCKET TCP...................................................................9
1.1.Định nghĩa...........................................................................................................9
1.2.Mô hình clients/server sử dụng socket ở chế độ hướng kết nối TCP.................11
1.3.Lập trình Socket TCP trong Java.......................................................................14
1.3.1.Xây dựng chương trình clients ở chế độ hướng kết nối..............................15
1.3.2.Xây dựng chương trình server ở chế độ hướng kết nối...............................16
CHƯƠNG 2: FILE TRANSFER PROTOCOL...........................................................19
2.1.Giới thiệu..........................................................................................................19
2.2.Mục đích của giao thức FTP.............................................................................21
2.3.Những phê bình về giao thức FTP.....................................................................21
2.4.Các loại kết nối.................................................................................................23
2.4.1.Active FTP.................................................................................................23
2.4.2.Passive FTP................................................................................................23
2.5.Tìm hiểu các hệ thống FTP có sẵn.....................................................................24
2.5.1.FTP Client..................................................................................................24
2.5.2.FTP Server..................................................................................................25
2.5.3.Giao thức FTP............................................................................................26
CHƯƠNG 3: PHÂN TÍCH THIẾT KẾ CHƯƠNG TRÌNH........................................28
3.1.Sơ đồ biều diễn quá trình xử lý các chức năng..................................................28
3.1.1.Sơ đồ tổng quát:.........................................................................................28
3.1.2.Sơ đồ chức năng:........................................................................................28
3.1.3.Sơ đồ biểu diễn qúa trình xử lý chi tiết các chức năng...............................30
a.Sơ đồ biểu diễn qúa trình xử lý của Server...................................................30
b.Sơ đồ biểu diễn qúa trình xử lý của Client trên cơ sở các thành phần giao
diện đồ hoạ (GUI)...........................................................................................33
c.Sơ đồ biểu diễn việc quản trị các user trên hệ thống.....................................41
3.2.Lưu đồ thuật toán..............................................................................................45
3.2.1.Lưu đồ giải thuật cho qúa trình xử lý của FTP Server................................45
3.2.2.Lưu đồ giải thuật cho qúa trình xử lý của FTP Client.................................47
Đặng Quang Vũ – Đỗ Văn Thanh Nho – 11TLT.CNTT Trang 3
Xây dựng chương trình FTP
3.2.3.Lưu đồ giải thuật cho việc quản trị các user trên hệ thống.........................54
CHƯƠNG 4: GIỚI THIỆU CHƯƠNG TRÌNH..........................................................58
4.1.Giới thiệu tổng quan chương trình:...................................................................58
4.2.So sánh với FTP Server FileZilla:.....................................................................61
4.2.1.Giới thiệu FTP Server FileZilla:.................................................................61
4.2.2.So sánh:......................................................................................................62
TỔNG KẾT.................................................................................................................64
TÀI LIỆU THAM KHẢO...........................................................................................66
Đặng Quang Vũ – Đỗ Văn Thanh Nho – 11TLT.CNTT Trang 4
Xây dựng chương trình FTP
DANH MỤC CÁC HÌNH VẼ
Hình 1.1.1.Mô hình OSI dạng rút gọn................................................................................
Hình 1.1.2.Số hiệu cổng của một số dịch vụ nổi tiếng.....................................................
Hình 1.2.1.Server tạo socket, bind, listen ........................................................................
Hình 1.2.2.Client tạo socket yêu cầu kết nối....................................................................
Hình 1.2.3.Trao đổi thông tin giữa Client và Server.........................................................
Hình 1.2.4.Kết thúc phiên làm việc..................................................................................
Hình 1.2.5.Toàn bộ quá trình làm việc............................................................................. Hình 2.4.1.Actice FTP Hình 2.4.2.Passive FTP
Hình 2.5.3.Một phiên làm việc FTP thông thường6
Hình 3.1.1.Sơ đồ hoạt động tổng quát8
Hình 3.1.2.Sơ đồ chức năng chương trình9
Hình 3.1.3.1.Sơ đồ quá trình xử lý của Server30
Hình 3.1.3.2.Sơ đồ kiểm tra đăng nhập từ Client30
Hình 3.1.3.3.Sơ đồ xử lý đăng nhập31
Hình 3.1.3.4.Sơ đồ xử lý yêu cầu của Client
Hình 3.1.3.5.Xử lý của Client trên giao diện đồ họa33
Hình 3.1.3.6.Xử lý Connect..............................................................................................
Hình 3.1.3.7. Delete Client...............................................................................................
Hình 3.1.3.8. Upload Client..............................................................................................
Hình 3.1.3.9. Download Client.........................................................................................
Hình 3.1.3.10.Xử lý hàng đợi Client................................................................................
Hình 3.1.3.11.Xử lý Upload.............................................................................................
Hình 3.1.3.12.Xử lý Download........................................................................................
Hình 3.1.3.13.Xử lý Disconnect.......................................................................................
Hình 3.1.3.14.Quản trị User trên hệ thống........................................................................
Hình 3.1.3.15.Thêm User.................................................................................................
Hình 3.1.3.16.Xóa User....................................................................................................
Hình 3.1.3.17.Cập nhập Diraccess...................................................................................
Hình 3.2.1.1.Lưu đồ xử lý đăng nhập Server....................................................................
Đặng Quang Vũ – Đỗ Văn Thanh Nho – 11TLT.CNTT Trang 5
Xây dựng chương trình FTP
Hình 3.2.1.2.Lưu đồ xử lý yêu cầu của Client..................................................................
Hình 3.2.2.1.Lưu đồ xử lý Connect..................................................................................
Hình 3.2.2.2.Lưu đồ xử lý Delete.....................................................................................
Hình 3.2.2.3.Lưu đồ xử lý Upload....................................................................................
Hình 3.2.2.4.Lưu đồ xử lý Download...............................................................................
Hình 3.2.2.5.Lưu đồ xử lý hàng đợi.................................................................................
Hình 3.2.2.6.Lưu đồ xử lý Upload Server........................................................................
Hình 3.2.2.7.Lưu đồ xử lý Download Server...................................................................
Hình 3.2.2.8.Lưu đồ xử lý Disconnect.............................................................................
Hình 3.2.3.1.Lưu đồ thêm User........................................................................................
Hình 3.2.3.2.Lưu đồ xóa User..........................................................................................
Hình 3.2.3.3.Lưu đồ xử lý cập nhập Diraccess.................................................................
Đặng Quang Vũ – Đỗ Văn Thanh Nho – 11TLT.CNTT Trang 6
Xây dựng chương trình FTP LỜI MỞ ĐẦU
Ngày nay cùng với sự phát triển chóng mặt của khoa học kỹ thuật, một kỷ
nguyên mới được mở ra kỷ nguyên của công nghệ thông tin. Nhu cầu của con người
càng lớn đặc biệt các ngành khoa học kỹ thuật khác đều cần đến sự hỗ trợ của công
nghệ thông tin. Mọi người đếu có nhu cầu truy cập internet để cung cấp cũng như lấy
những thông tin cần thiết qua các máy chủ.
Với những lý do trên em xin chọn đề tài “Xây dựng chương trình FTP”.
Người sử dụng chương trình là người có nhu cầu truyền nhận file bằng giao thức
FTP (File Transfer Protocol) thông qua mạng Internet.
Trong môi trường Internet, khi cần truyền nhận file các file có kích thước lớn
trên vài chục KB người sử dụng thường gặp trường hợp việc truyền nhận file bị gián
đoạn. Ví dụ khi lấy một file bằng giao thức FTP sử dụng chương trình Internet
Explorer, người sử dụng thường gặp thông báo lỗi sau vài phút download file.
Để giải quyết vấn đề này, người sử dụng thường sử dụng các chương trình
chuyên dùng để lấy file như ReGet để có thể tiếp tục lấy file từ vị trí xảy ra lỗi.
Người sử dụng có xu hướng lấy đồng thời nhiều file tại một server nào đó trên
Internet. Như vậy chương trình phải hỗ trợ lấy nhiều file đồng thời. Tuy nhiên không
phải lúc nào chương trình cũng có thể lấy đồng thời nhiều file tại một site nếu server
hạn chế số kết nối đồng thời tới một địa chỉ IP.
Người sử dụng cũng có nhu cầu lấy file bằng nhiều giao thức khác nhau như FTP
(File Transfer Protocol), HTTP (HyperText Transfer Protocol), …
Tuy nhiên trong phạm vi của luận văn này chúng em chỉ có thể hỗ trợ được việc
lấy file bằng giao thức FTP.
Mặt khác chương trình cũng phải tạo sự tiện lợi cho người sử dụng. Chương
trình phải có giao diện đồ họa thân thiện, giúp cho người sử dụng xem được nội dung
Đặng Quang Vũ – Đỗ Văn Thanh Nho – 11TLT.CNTT Trang 7
Xây dựng chương trình FTP
các thư mục từ xa và cục bộ. Từ đó giúp cho việc upload và download dễ dàng hơn.
Chương trình cũng phải hiện thực một số chức năng cơ bản của một FTP client download, upload,… Mục tiêu: -
Khuyến khích việc chia sẻ file. -
Giúp đỡ việc sử dụng gián tiếp(thông qua các chương trình) các máy tính từ xa. -
Che thông tin người sử dụng khỏi những thay đổi trong các hệ thống lưu trữ
file giữa các máy chủ(host). -
Truyền dữ liệu một cách tin cậy và hiệu quả. -
Tạo một ứng dụng FTP chạy trên bất kỳ máy nào. -
Nghiên cứu tìm hiểu về lập trình socket TCP -
Nghiên cứu về ngôn ngữ lập trình java
Đặng Quang Vũ – Đỗ Văn Thanh Nho – 11TLT.CNTT Trang 8
Xây dựng chương trình FTP
CHƯƠNG 1: LẬP TRÌNH SOCKET TCP 1.1.Định nghĩa
Có nhiều định nghĩa khác nhau về socket tùy theo cách nhìn của người sử dụng:
Một cách tổng quát nhất có thể định nghĩa: một socket là một điểm cuối trong
một kết nối giữa hai chương trình đang chạy trên mạng.
Nhìn trên quan điểm của người phát triển ứng dụng người ta có thể định nghĩa
socket là một phương pháp thiết lập kết nối truyền thông giữa một chương trình yêu
cầu dịch vụ (được gán nhãn là clients) và một chương trình cung cấp dịch vụ (được
gán nhãn là server) trên mạng hoặc trên cùng một máy tính.
Ðối với người lập trình, họ nhìn nhận socket như một giao diện nằm giữa tầng
ứng dụng và tầng khác trong mô hình mạng OSI, có nhiệm vụ thực hiện việc giao tiếp
giữa chương trình ứng dụng với các tầng bên dưới của mạng.
Hình 1.1.1. Mô hình OSI dạng rút gọn
Tuy nhiên, các lập trình viên hiện nay gần như luôn luôn bị ngăn cản tạo socket
riêng bằng cách thủ công, bởi dù bạn dùng Java hay PHP,…, có thể bạn sẽ không bao
giờ mở được cổng một cách tường minh. Thay vào đó các lập trình viên sẽ dùng thư
viện socket được hỗ trợ sẵn bởi các ngôn ngữ lập trình. Như vậy, các socket vẫn tồn
Đặng Quang Vũ – Đỗ Văn Thanh Nho – 11TLT.CNTT Trang 9
Xây dựng chương trình FTP
tại để kết nối các ứng dụng của người dùng, nhưng các chi tiết của socket được ẩn
trong những lớp sâu hơn để mọi người không phải động chạm đến.
Do socket là một thực thể phần mềm có chức năng nhận hoặc gửi dữ liệu đi trên
kết nối giữa hai ứng dụng mạng nên khi cần sử dụng socket thì ứng dụng sẽ tạo ra
socket để dùng, khi không cần sử dụng nữa thì có thể huỷ bỏ socket.
Một socket được định danh bằng một cặp giá trị:
- Địa chỉ IP của máy tính có chương trình ứng dụng đã tạo ra socket
- Số hiệu cổng (port) mà socket dùng để nhận/gửi dữ liệu.
Khái niệm cổng: Cổng thực chất là số hiệu của một chương trình ứng dụng đang
chạy trên một máy tính. Để hệ thống có thể theo dõi được các chương trình ứng dụng
đang chạy trên máy tính, hệ điều hành sẽ gán cho mỗi ứng dụng đó một con số
(16bits) trong khoảng từ 0 đến 65535. Trong thực tế thì các số hiệu cổng từ 0 đến
1023 (gồm 1024 cổng) đã được dùng cho các dịch vụ nổi tiếng :
Hình 1.1.2. Số hiệu cổng của một số dịch vụ nổi tiếng
Nếu chúng ta không phải là người quản trị thì nên dùng từ cổng 1024 trở lên.
Vậy socket = Địa chỉ IP + Số hiệu Port
Đặng Quang Vũ – Đỗ Văn Thanh Nho – 11TLT.CNTT Trang 10
Xây dựng chương trình FTP
1.2.Mô hình clients/server sử dụng socket ở chế độ hướng kết nối TCP
Giai đoạn 1: Server tạo socket, gán số hiệu cổng và lắng nghe yêu cầu kết nối.
Hình 1.2.1.Server tạo socket, bind, listen
- socket(): Server yêu cầu tạo một socket để có thể sử dụng các dịch vụ của tầng vận chuyển.
- bind(): Server yêu cầu gán số hiệu cổng (port) cho socket.
- listen(): Server lắng nghe các yêu cầu kết nối từ clients trên cổng đã được gán.
Server sẵn sàng phục vụ clients.
Giai đoạn 2: Clients tạo socket, yêu cầu thiết lập một kết nối tới server.
Đặng Quang Vũ – Đỗ Văn Thanh Nho – 11TLT.CNTT Trang 11
Xây dựng chương trình FTP
Hình 1.2.2.Client tạo socket yêu cầu kết nối
- socket(): Clients yêu cầu tạo một socket để có thể sử dụng các dịch vụ của tầng
vận chuyển, thông thường hệ thống tự động gán một số hiệu cổng còn rảnh cho socket của clients.
- connect(): Clients gửi yêu cầu nối kết đến server có địa chỉ IP và Port xác định.
- accept(): Server chấp nhận kết nối của clients, khi đó một kênh giao tiếp ảo
được hình thành, clients và server có thể trao đổi thông tin với nhau thông qua kênh ảo này.
Giai đoạn 3: Trao đổi thông tin giữa clients và server
Hình 1.2.3.Trao đổi thông tin giữa Client và Server
- Sau khi chấp nhận yêu cầu kết nối, thông thường server thực hiện lệnh read()
và nghẽn cho đến khi có thông điệp yêu cầu (Request Message) từ clients gửi đến.
- Server phân tích và thực thi yêu cầu, kết quả sẽ được gửi về clients bằng lệnh write().
Đặng Quang Vũ – Đỗ Văn Thanh Nho – 11TLT.CNTT Trang 12
Xây dựng chương trình FTP
- Sau khi gửi yêu cầu bằng lệnh write(), clients chờ nhận thông điệp kết quả
(Reply Message) từ server bằng lệnh read().
Giai đoạn 4 : Kết thúc phiên làm việc
Hình 1.2.4.Kết thúc phiên làm việc
- Các câu lệnh read(), write() có thể được thực hiện nhiều lần (ký hiệu bằng hình ellipse).
- Kênh ảo sẽ bị xóa khi server hoặc clients đóng socket bằng lệnh close().
Như vậy toàn bộ quá trình diễn ra như sau :
Đặng Quang Vũ – Đỗ Văn Thanh Nho – 11TLT.CNTT Trang 13
Xây dựng chương trình FTP
Hình 1.2.5.Toàn bộ quá trình làm việc
1.3.Lập trình Socket TCP trong Java
Java hỗ trợ lập trình mạng thông qua các lớp trong gói java.net. Một số lớp
tiêu biểu được dùng cho lập trình clients/server sử dụng socket làm phương tiện giao tiếp như:
• InetAddress: Lớp này biểu diễn địa chỉ Internet, quan trọng nhất là hai
phương thức getHostName() và getAddress() dùng để chuyển đổi giữa địa chỉ IP và tên máy tính.
• Socket: Hỗ trợ các phương thức liên quan đến socket cho chương trình
clients ở chế độ hướng kết nối.
• ServerSocket: Hỗ trợ các phương thức liên quan đến socket cho chương
trình server ở chế độ hướng kết nối.
Đặng Quang Vũ – Đỗ Văn Thanh Nho – 11TLT.CNTT Trang 14
Xây dựng chương trình FTP
• DatagramSocket: Hỗ trợ các phương thức liên quan đến socket ở chế độ
không hướng kết nối cho cả clients và server.
• DatagramPacket: Lớp cài đặt gói tin dạng thư tín người dùng trong giao
tiếp giữa clients và server ở chế độ không hướng kết nối.
1.3.1.Xây dựng chương trình clients ở chế độ hướng kết nối Các bước tổng quát:
1. Mở một socket kết nối đến server đã biết địa chỉ IP (hay tên miền) và số hiệu cổng
2. Lấy InputStream và OutputStream gán với socket
3. Tham khảo protocol của dịch vụ để định dạng đúng dữ liệu trao đổi với server
4. Trao đổi dữ liệu với server nhờ vào các InputStream và OutputStream
5. Đóng socket trước khi kết thúc chương trình
Lớp java.net.Socket: lớp socket hỗ trợ các phương thức cần thiết để xây
dựng các chương trình clients sử dụng ở chế độ hướng kết nối. Dưới đây là một số
phương thức thường dùng để xây dựng clients
- public Socket(String HostName, int PortNumber) throws IOException:
phương thức này dùng để kết nối đến một server có tên là HostName, cổng là
PortNumber. Nếu kết nối thành công, một kênh ảo sẽ được hình thành giữa clients và server.
+ HostName : địa chỉ IP hoặc tên logic theo dạng tên miền
+ PortNumber : có giá trị từ 0 đến 65535
Đặng Quang Vũ – Đỗ Văn Thanh Nho – 11TLT.CNTT Trang 15
Xây dựng chương trình FTP
Ví dụ: mở socket và kết nối đến Web Server của khoa công nghệ thông tin, đại học Bách Khoa Đà Nẵng:
Socket s = new Socket (www.dut.edu.vn,80);
- public InputStream getInputStream(): phương thức này trả về
InputStream nối với socket. Chương trình clients dùng InputStream này để
nhận dữ liệu từ server gửi về.
Ví dụ : lấy InputStream của socket s:
InputStream is = s.getInputStream();
- public OutputStream getOutputStream(): phương thức này trả về
OutputStream nối với socket. Chương trình clients dùng OutputStream này để gửi dữ liệu cho server.
Ví dụ: Lấy OutputStream của socket s :
OutputStream os = s.getOutputStream();
- public close(): phương thức này sẽ đóng socket lại, giải phóng kênh ảo, xoá kết
nối giữa clients và server.
Ví dụ : Đóng socket s : s.close();
1.3.2.Xây dựng chương trình server ở chế độ hướng kết nối
Lớp java.net.ServerSocket: hỗ trợ các phương thức cần thiết để xây
dựng các chương trình server sử dụng socket ở chế độ hướng kết nối. Dưới đây là một
số phương thức thường dùng để xây dựng server
- public ServerSocket(int PortNumber : phương thức này tạo một socket với số
hiệu cổng là PortNumber mà sau đó server sẽ lắng nghe trên cổng này
Đặng Quang Vũ – Đỗ Văn Thanh Nho – 11TLT.CNTT Trang 16
Xây dựng chương trình FTP
Ví dụ : tạo socket cho server với số hiệu cổng là 7 :
ServerSocket ss = new ServerSocket(7);
- public Socket accept() : phương thức này lắng nghe yêu cầu kết nối của clients.
Đây là một phương thức hoạt động ở chế độ nghẽn; nó sẽ bị nghẽn cho đến khi có một
yêu cầu kết nối của clients gửi đến. Khi có yêu cầu kết nối của clients gửi đến, nó sẽ
chấp nhận yêu cầu kết nối, trả về một socket là một đầu của kênh giao tiếp ảo giữa
server và clients yêu cầu kết nối.
Ví dụ: Socket ss chờ nhận yêu cầu nối kết : Socket s = ss.accept();
Server sau đó sẽ lấy InputStream và OutputStream của socket mới s để giao tiếp với clients.
Xây dựng chương trình server phục vụ tuần tự:
Một server có thể được cài đặt để phục vụ clients theo hai cách: phục vụ tuần
tự hoặc phục vụ song song.
Trong chế độ phục vụ tuần tự, tại một thời điểm server chỉ chấp nhận một yêu
cầu kết nối, các yêu cầu kết nối của clients khác đều không được đáp ứng (đưa vào hàng đợi ).
Ngược lại, trong chế độ phục vụ song song, tại một thời điểm server chấp nhận
nhiều yêu cầu kết nối và phục vụ nhiều clients cùng lúc
Trong phần này, ta sẽ tìm hiểu về chế độ phục vụ tuần tự của server, còn
chương tiếp sẽ tìm hiểu cụ thể về chế độ phục vụ song song (sau khi đã tìm hiểu về Thread).
Các bước tổng quát của một server phục vụ tuần tự :
Đặng Quang Vũ – Đỗ Văn Thanh Nho – 11TLT.CNTT Trang 17
Xây dựng chương trình FTP
- Tạo socket và gán số hiệu cổng cho server
- Lắng nghe yêu cầu kết nối
- Với một yêu cầu kết nối được chấp nhận thực hiện các bước sau:
+ lấy InputStream và OutputStream gắn với socket của kênh ảo vừa được hình thành
+ lặp lại công việc sau:
Chờ nhận các yêu cầu (công việc)
Phân tích và thực hiện yêu cầu
Tạo thông điệp trả lời
Gửi thông điệp trả lời về clients
Nếu không còn yêu cầu hoặc clients kết thúc, đóng socket và quay lại bước 2
Đặng Quang Vũ – Đỗ Văn Thanh Nho – 11TLT.CNTT Trang 18
Xây dựng chương trình FTP
CHƯƠNG 2: FILE TRANSFER PROTOCOL 2.1.Giới thiệu
FTP là chữ viết tắc của File Transfer Protocol – Giao thức truyền file. FTP là một
giao thức truyền file trên mạng dựa trên chuẩn TCP nên rất đáng tin cậy.
Hoạt động của FTP cần có 2 máy tính, một máy chủ (Server) và một máy khách
(Client) Máy chủ FTP, dùng chạy phần mềm cung cấp dịch vụ FTP, gọi là trình chủ,
lắng nghe yêu cầu về dịch vụ của các máy tính khác trên mạng lưới. Máy khách chạy
phần mềm FTP dành cho người sử dụng dịch vụ, gọi là trình khách, thì khởi đầu một
liên kết với máy chủ. Một khi hai máy đã liên kết với nhau, máy khách có thể xử lý
một số thao tác về tập tin, như tải tập tin lên máy chủ, tải tập tin từ máy chủ xuống
máy của mình, đổi tên của tập tin, hoặc xóa tập tin ở máy chủ v.v. Vì giao thức FTP là
một giao thức chuẩn công khai, cho nên bất cứ một công ty phần mềm nào, hay một
lập trình viên nào cũng có thể viết trình chủ FTP hoặc trình khách FTP. Hầu như bất
cứ một nền tảng hệ điều hành máy tính nào cũng hỗ trợ giao thức FTP. Điều này cho
phép tất cả các máy tính kết nối với một mạng lưới có nền TCP/IP, xử lý tập tin trên
một máy tính khác trên cùng một mạng lưới với mình, bất kể máy tính ấy dùng hệ
điều hành nào (nếu các máy tính ấy đều cho phép sự truy cập của các máy tính khác,
dùng giao thức FTP). Hiện nay trên thị trường có rất nhiều các trình khách và trình
chủ FTP, và phần đông các trình ứng dụng này cho phép người dùng được lấy tự do, không mất tiền
FTP thường chạy trên hai cổng, 20 và 21, và chỉ chạy riêng trên nền của TCP.
Trình chủ FTP lắng nghe các yêu cầu dịch vụ từ những kết nối vào máy của các trình
khách FTP, trên cổng 21. Đường kết nối trên cổng 21 này tạo nên một dòng truyền
điều khiển, cho phép các dòng lệnh được chuyển qua trình chủ FTP.
Để truyền tải tập tin qua lại giữa hai máy, chúng ta cần phải có một kết nối khác.
Tùy thuộc vào chế độ truyền tải được sử dụng, trình khách (ở chế độ năng động -
active mode) hoặc trình chủ (ở chế độ bị động - passive mode) đều có thể lắng nghe
yêu cầu kết nối đến từ đầu kia của mình. Trong trường hợp kết nối ở chế độ năng
Đặng Quang Vũ – Đỗ Văn Thanh Nho – 11TLT.CNTT Trang 19