Tải bản đầy đủ (.doc) (11 trang)

Bài tập lớn hệ phân tán- Quản lý xe máy

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (319.35 KB, 11 trang )

Bài tập lớn Hệ Phân Tán Quản lý xe máy
BÀI TẬP LỚN HỆ PHÂN TÁN
Đề tài:
QUẢN LÝ XE MÁY
Nhóm 2
I. Giới thiệu đề tài:
- Ngôn ngữ lập trinh sử dụng: JaVa.
- Môi trường phát triển: NetBeans IDE 6.0.1
- Cơ sở dữ liệu: Microsoft Access.
- Cách thức lập trình: sử dụng socket, giao thức TCP.
- Mô hình: Client-Server. Nhiều client có thể kết nối tới 1 server.
- Kiến trúc: 3 tầng (3-tier architecture).
II. Tìm hiểu giao thức TCP:
TCP ( Transmission Control Protocol) là một giao thức hướng kết
nối, nó cung cấp một đường truyền dữ liệu tin cậy giữa hai máy tính. Tính
tin cậy thể hiện ở việc nó đảm bảo dữ liệu được gửi sẽ đến được đích và theo
đúng thứ tự như khi nó được gửi.
Tính tin cậy của đường truyền được thể hiện ở hai đặc điểm sau:
• Mọi gói tin cần gửi sẽ đến được đích. Để làm điều này thì mỗi
lần phía gửi gửi xong một gói tin nó sẽ chờ nhận một xác nhận từ bên nhận
rằng đã nhận được gói tin. Nếu sau một khoảng thời gian mà phía gửi không
nhận được thông tin xác nhận phản hồi thì nó sẽ phát lại gói tin. Việc phát lại
sẽ được tiến hành cho đến khi việc truyền tin thành công, tuy nhiên sau một
số lần phát lại max nào đó mà vẫn chưa thành công thì phía gửi có thể suy ra
là không thể truyền tin được và sẽ dừng việc phát tin.
• Các gói tin sẽ được trình ứng dụng nhận được theo đúng thứ tự
như chúng được gửi. Bởi các gói tin có thể được dẫn đi trên mạng theo nhiều
con đường khác nhau trước khi tới đích nên thứ tự khi tới đích của chúng có
thể không giống như khi chúng được phát. Do đó để đảm bảo có thể sắp xếp
lại các gói tin ở phía nhận theo đúng thứ tự như khi chúng được gửi, giao
thức TCP sẽ gắn vào mỗi gói tin một thông tin cho biết thứ tự của chúng


trong cả khối tin chung được phát nhờ vậy bên nhận có thể sắp xếp lại các gói
tin theo đúng thứ tự của chúng.
Như vậy có thể thấy TCP cung cấp cho chúng ta một kênh truyền
thông điểm - điểm phục vụ cho các ứng dụng đòi hỏi giao tiếp tin cậy như
HTTP ( HyperText Tranfer Protocol), FTP ( File Tranfer Protocol), Telnet…
Trang 1
Bài tập lớn Hệ Phân Tán Quản lý xe máy
Các ứng dụng này đòi hỏi một kênh giao tiếp tin cậy bởi thứ tự của dữ liệu
được gửi và nhận là yếu tố quyết định đến sự thành công hay thất bại của
chúng. Hãy lấy ví dụng khi HTTP được sử dụng để đọc thông tin từ một điạ
chỉ URL, dữ liệu phải được nhận theo đúng thứ tự mà chúng được gửi nếu
không thứ mà bạn nhận được có thể là một trang HTML với nội dung lộn xộn
hoặc một file zip bị lỗi và không thể giải nén
III. Tìm hiểu về các Cổng giao tiếp:
Cổng là một cơ chế cho phép dữ liệu được truyền đến đúng ứng dụng
đang chạy trên máy tính.
Chúng ta biết rằng mỗi máy tính chỉ có một kết nối vật lý với mạng,
tất cả các dữ liệu cần truyền cho máy tính khác sẽ được mang đi bởi kết nối
này. Tuy nhiên chúng ta cũng lại thấy rằng trên mỗi máy tính không chỉ có
một mà có thể có nhiều ứng dụng ( chương trình) cùng chạy và cùng có nhu
cầu giao tiếp qua mạng do đó dữ liệu máy tính nhận được thông qua kết nối
với mạng cần phải được chuyển đến đúng ứng dụng cần nó vì vậy máy tính
cần phải biết dữ liệu mà nó nhận được được phía gửi hi vọng chuyển đến ứng
dung nào. Việc này được thực hiện thông qua việc sử dụng các cổng:
• Mỗi ứng dụng chạy trên máy tính sẽ được gắn với một cổng
logic, đó là một số 16 bit. Các cổng có giá trị từ 0 đến 65 535 ( 2
16
-1), trong
đó các cổng từ 0 tới 1023 bị hạn chế, chúng chủ yếu được sử dụng cho các
dịch vụ phổ biến như HTTP, FTP… , các cổng còn lại được sử dụng cho các

ứng dụng của người dùng.
• Dữ liệu truyền qua mạng Internet chứa trong nó thông tin để
xác định định danh và cổng trên máy tính mà nó cần đến. Định danh của mỗi
máy tính được xác định bằng một địa chia IP có chiều dài 32 bit.
Việc gán một ứng dụng với một cổng có thể được thực hiện bởi chương
trình hoặc bởi hệ điều hành tùy theo mục đích sử dụng của ứng dụng. Điều
này ta sẽ xem xét cụ thể trong phần lập trình socket sau.
IV. Tìm hiểu về Socket:
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.
Lập trình với 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à Client) 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.
1. Nguyên lý hoạt động
Trước hết chúng ta hãy xem làm thế nào các socket có thể xác định
đựợc nhau.
Khi một chương trình tạo ra một socket, một định danh dạng số sẽ
được gán cho socket, định danh này chính là cổng mà chúng ta đã tìm hiểu ở
trên. Việc gán số cổng này cho socket có thể được thực hiện bởi chương trình
Trang 2
Bài tập lớn Hệ Phân Tán Quản lý xe máy
hoặc bởi hệ điều hành tùy theo cách socket được sử dụng như thế nào. Trong
mỗi gói tin mà socket gửi đi có chứa hai thông tin để xác định đích đến của
gói tin:
+ Một địa chỉ mạng để xác định hệ thống sẽ nhận gói tin.
+ Một số định danh cổng để nói cho hệ thống đích biết socket nào
trên nó sẽ nhận dữ liệu.
Nhờ hai thông tin này mà gói tin có thể đến được đúng máy tính chứa
socket mà nó cần đến ( nhờ địa chỉ mạng) và được phân phối đến đúng socket

đích ( nhờ địa chỉ cổng của socket đích).
Bởi dưới góc độ lập trình các socket thường làm việc theo cặp, một
socket đóng vai trò làm client còn các socket khác đóng vai trò như một
server. Socket phía server xác định một cổng cho giao tiếp mạng, sau đó chờ
nghe dữ liệu mà client gửi tới nó bằng client socket. Do đó các cổng cho
server socket phải được biết bởi các chương trình client. Ví dụ server FTP sử
dụng một socket để nghe tại cổng 21 do đó nếu một chương trình client muốn
giao tiếp với server FTP nó cần phải kết nối đến socket đang nghe tại cổng
21.
Như vậy cổng của socket phía server được xác định bởi chương trình,
ngược lại cổng cho client socket được xác định bởi hệ điều hành. Khi một
socket phía client gửi một gói tin tới socket phía server thì trong gói tin đã có
chứa thông tin về địa chỉ của hệ thống client và cổng của socket phía client
nên server hoàn toàn có thể gửi thông tin phản hồi cho client.
Chúng ta có thể khái quát quá trình trao đổi dữ liệu thông qua các
socket như sau:
1. Chương trình phía Server tạo ra một socket, socket này được
chương trìnhgắn với một cổng trên server. Sau khi đựợc tạo ra socket này
( mà từ nay ta sẽ gọi là socket phía server) sẽ chờ nghe yêu cầu từ phía client.
2. Khi chương trình phía Client cần kết nối với một Server, nó cũng
tạo ra một socket, socket này cũng được hệ điều hành gắn với một cổng.
Chương trình Client sẽ cung cấp cho Socket của nó ( mà từ nay ta sẽ gọi là
Socket phía Client) điạ chỉ mạng và cổng của Socket phía Server và yêu cầu
thực hiện kết nối ( nếu chương trình định sử dụng giao thức hướng kết nối)
hoặc truyền dữ liệu ( nếu chương trình sử dụng giao thức không hướng kết
nối).
3. Chương trình phía Server và chương trình phía Client trao đổi dữ
liệu vớinhau bằng cách đọc từ Socket hoặc ghi vào Socket của minh. Các
socket ở hai phía nhận dữ liệu từ ứng dụng và đóng gói để gửi đi hoặc nhận
các dữ liệu được gửi đến và chuyển cho chương trình ứng dụng bởi socket ở

cả hai phía đều biết được địa chỉ mạng và điạ chỉ cổng của nhau.
Ở bước thứ hai chúng ta thấy chương trình ứng dụng phải lựa chọn
giao thức mà nó định sử dụng để trao đổi dữ liệu. Tùy theo việc chúng ta sử
dụng giao thức nào ( TCP hay UDP) mà cách thức xử lý trước yêu cầu của
client có thể khác. Sau đây chúng ta sẽ xem xét chi tiết các thức trao đổi dữ
liệu của Socket ứng với từng loại giao thức.
Trang 3
Bài tập lớn Hệ Phân Tán Quản lý xe máy
2. Socket hỗ trợ TCP
a. Ở phía Server: Khi một ứng dụng trên server hoạt động nó sẽ tạo
ra một socket và đăng ký với server một cổng ứng dụng và chờ đợi yêu cầu
kết nối từphía client qua cổng này.
Hình 4-2: Client gửi yêu cầu đến Server
b. Phía client: Nó biết địa chỉ của máy trên đó server đang chạy và
cổng và server đang chờ nghe yêu cầu. Do đó khi muốn kết nối đến Server,
nó cũng tạo ra một socket chứa địa chỉ máy client và cổng của ứng dụng trên
máy client đồng thời client sẽ cung cấp cho socket của nó địa chỉ và cổng của
Server mà nó cần kết nối và yêu cầu Socket thực hiện kết nối.
KhiServer nhận được yêu cầu kết nối từ Client, nếu nó chấp nhận
thì server sẽ sinh ra một socket mới được gắn với một cổng khác với cổng mà
nó đang nghe yêu cầu. Sở dĩ server làm như vậy bởi nó cần cổng cũ để tiếp
tục nghe yêu cầu từ phía client trong khi vẫn cần một kết nối với client.
Hình 4-2: Server chấp nhận yêu cầu và tạo một socket để phục vụ client
Sau đó chương trình ứng dụng phía Server sẽ gửi thông báo chấp
nhận kết nối cho Client cùng thông tin về địa chỉ cổng mới của socket mà nó
dành cho Client.
c. Quay lại phía client, nếu kết nối được chấp nhận nghĩa là socket
của nó đã được tạo ra thành công và nó có thể sử dụng socket để giao tiếp với
server bằng cách viết và ghi tới socket theo cách giao tiếp với một tài nguyên
trên máy tính thông thường.

3. Socket hỗ trợ UDP
a. Ở phía Server: Khi một ứng dụng trên server hoạt động nó sẽ tạo
ra một socket và đăng ký với server một cổng ứng dụng và chờ đợi yêu cầu
kết nối từ phía client qua cổng này.
Trang 4
Bài tập lớn Hệ Phân Tán Quản lý xe máy
b. Phía client: Nó biết địa chỉ của máy trên đó server đang chạy và
cổng và server đang chờ nghe yêu cầu. Do đó khi muốn giao tiếp với Server,
nó cũng tạo ra một socket chứa địa chỉ máy client và cổng của ứng dụng trên
máy client đồng thời client sẽ cung cấp cho socket của nó địa chỉ và cổng của
Server mà nó cần kết nối. Khi client muốn gửi tin đến Server nó sẽ chuyển
dữ liệu cho socket của minh, socket này sẽ chuyển thẳng gói tin mà client
muốn gửi tới server dưới dạng một datagram có chứa địa chỉ máy server và
cổng mà server đang chờ nghe yêu cầu. Như vậy không hề có môt kết nối
nào được thực hiện giữa client với server và server cũng không cần tạo ra một
socket khác để kết nối với client thay vào đó server dùng ngay cổng ban đầu
để trao đổi dữ liệu.
V. Xây dựng chương trình:
1. Cơ sở dữ liệu:
gồm 1 table Xe:
+ xeID(nvarchar): id xe.
+ xeName(nvarchar): tên xe.
+ xeColor(nvarchar): màu xe.
+ xePrice(double): giá xe.
+ xeMark(nvarchar): hiệu xe.
+ xeQuantity(int): số lượng xe.
2. Chương trình: gồm 2 phần: Client và Server.
+ Server: có nhiệm vụ lắng nghe các kết nối từ các client, nhận yêu cầu
từ các client, xử lý các yêu cầu đó (thao tác với dữ liệu), sau đó gửi kết quả
ngược lại cho client.

Hình 2-1 : Giao diện Server
Trang 5
Bài tập lớn Hệ Phân Tán Quản lý xe máy
+ Client: kết nối tới server, gửi yêu cầu (tìm, thêm, xóa, cập nhật thông
tin xe máy) đến server, sau đó nhận kết quả từ server trả về và hiện thị lên
màn hình.
Hình 2-2: Giao diện Client
VI. Mô tả hoạt động:
+ Khởi động Server:
Hình 3-1: Khởi động Server
Trang 6
Bài tập lớn Hệ Phân Tán Quản lý xe máy
+ Client thực hiện kết nối đến Server:
Hình 3-2: Client thực hiện kết nối đến Server.
+ Mỗi lần có 1 Client kết nối đến hoặc ngắt kết nối, Server sẽ ghi lại các
hoạt động đó cũng như địa chỉ IP của IP.
Trang 7
Bài tập lớn Hệ Phân Tán Quản lý xe máy
Hình 3-3: Server thông báo có 1 Client kết nối đến

Hình 3-4: Server thông báo có 3 Client kết nối đến

Hình 3-5: Server thông báo vừa có 1 Client ngắt kết nối
+ Thêm 1 loại xe máy:
Trang 8
Bài tập lớn Hệ Phân Tán Quản lý xe máy
Hình 3-6: Thêm vào 1 loại xe máy
+ Tìm xe máy (theo id):
Hình 3-7: Tìm 1 loại xe máy
Trang 9

Bài tập lớn Hệ Phân Tán Quản lý xe máy
+ Xóa 1 loại xe máy:
Hình 3-8: Xóa 1 loại xe máy
+ Sửa, cập nhật thông tin 1 loại xe máy:
Trang 10
Bài tập lớn Hệ Phân Tán Quản lý xe máy
Hình 3-9: Cập nhật thông tin 1 loại xe máy
VII. Phụ lục:
• Chạy chương trình từ source code:
- Sử dụng NetBeans IDE import project.
- Chạy 2 file:
+ServerSide.java (package com.socket.server): Run > Run
File > Run “ServerSide.java”
+ClientSide.java (package com.socket.client): Run > Run
File > Run “ClientSide.java”
• Chạy chương trình trực tiếp từ file jar đã đóng gói:
- Chạy 2 file ServerSide.jar và ClientSide.jar ở thư mục dist.
Trang 11

×