TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN MẠNG VÀ TRUYỀN THÔNG
BÀI TẬP THỰC HÀNH:
LẬP TRÌNH MẠNG NÂNG CAO
Sinh viên thực hiện : Trần Thanh Liêm Lớp : 07T2Nhóm : 10BGiảng viên hướng dẫn : ThS. Nguyễn Văn Nguyên
Đà Nẵng, tháng 11/ 2011
SVTH: Trần Thanh Liêm 07T2
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
2
Bài tập Thực hành Lập trình Mạng nâng cao. 3
MỤC LỤC
MỤC LỤC.......................................................................................................3
LỜI NÓI ĐẦU.................................................................................................4
CHƯƠNG 1: TỔNG QUAN VỀ RMI..........................................................5
CHƯƠNG 2 TRIỀN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ.............................7
Mục tiêu......................................................................................................7
Môi trường triển khai..................................................................................7
Xây dựng chức năng của chương trình........................................................8
Chương trình bài tập 1 và 2: RMI Calculator........................................8
Chương trình bài tập 3: RMI Database..................................................8
TÀI LIỆU THAM KHẢO.............................................................................13
SVTH: Trần Thanh Liêm 07T2
LỜI NÓI ĐẦU
Ngày nay, RMI là một mô hình nổi tiếng trong mạng máy tính, được áp
dụng rất rộng rãi và là mô hình của hầu hết dịch vụ Internet hiện có. Ý tưởng
của RMI là một cơ chế gọi phương thức từ xa giữa 2 máy cài đặt máy ảo Java,
dùng để gọi một phương thức trên một đối tượng từ xa giống như trên máy
cục bộ.
Trong học kì này, em đang học môn Thực hành Lập trình mạng Nâng
cao. Để nâng cao khả năng của mình, em đã làm bài tập thực hành về RMI.
Trong quá trình thực hiện không thể tránh khỏi những thiếu sót, em rất mong
được sự chỉ bảo của các thầy cô và sự giúp đỡ của các bạn để kiến thức của
em được hoàn thiện hơn. Và em cũng xin chân thành cảm ơn thầy Nguyễn
Văn Nguyên - giảng viên môn Thực hành Lập trình mạng Nâng cao - đã giúp
đỡ em trong quá trình tìm hiểu và hoàn thành bài tập thực hành môn học này.
Sinh viên thực hiện
Trần Thanh Liêm 07T2
4
Bài tập Thực hành Lập trình Mạng nâng cao. 5
CHƯƠNG 1: TỔNG QUAN VỀ RMI
RMI là gì?
RMI là một cơ chế gọi phương thức từ xa giữa 2 máy cài đặt máy ảo Java,
dùng để gọi một phương thức trên một đối tượng từ xa giống như trên máy cục bộ.
RMI hoạt động dựa trên cơ chế stub/skeleton nghĩa là phát sinh bộ khung
sườn của đối tượng remote, đặt trên máy remote và máy local. Bộ khung sườn này
đóng vai trò như những nhà ngoại giao, nhờ đó 1 công việc được lREMOTELY thì
bây giờ có tính LOCALLY.
Stubs hoạt động phía client và Sekeleton hoạt động phía server, trong đặc tả
mới hiện nay, khi viết code không cần tạo ra Skeleton nữa, chúng ta chỉ cần tạo ra
stub cho client là đủ, phần còn lại, RMI sẽ lo liệu cho chúng ta.
Stub và Skeleton sẽ có nhiệm vụ trao đổi dữ liệu cho nhau, khi có một yêu
cầu dưới client, stub có nhiệm vụ Serialize mọi tham số (là object) và truyền lên
SVTH: Trần Thanh Liêm 07T2
Server, sau đó Skeleton sẽ deSerialize đối tượng này và xử lý, sau đó là một quá
trình ngược lại với quá trình trên, dữ liệu được trả về cho Client.
Chúng ta hiểu nôm na là client sẽ chép một tài liệu lên server nhờ sự hỗ trợ
của stub, sau đó Skeleton sẽ mở file đó ra và đọc thông tin trong đó, sau khi đọc
xong tài liệu anh ta sẽ chuyển cho cấp trên (server) xử lý, sau khi nhận được kết quả
anh ta sẽ tạo ra một tài liệu khác và chép về máy phía Client, Stub phía Client sẽ
mở tài liệu ra đọc và trao trả lại cho cấp trên của mình, sau đó là phần xử lý kết quả
đó của cấp trên ở Client. Và như vậy, trong chương trình sẽ có sự đóng góp của 4
người, 1 phụ tá và sếp trên server (service và Skeleton), 1 phụ tá và khách hàng
dưới client (customer và Stub).
CHƯƠNG 2: TRIỀN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ
6
Bài tập Thực hành Lập trình Mạng nâng cao. 7
2.1. Mục tiêu
- Nắm vững các kiến thức RMI.
- Tìm hiểu và viết các chương trình RMI theo yêu cầu đề ra.
2.2. Môi trường triển khai
Nhóm chúng em chọn ngôn ngữ Java vì ngôn ngữ hỗ trợ rất tốt
trong việc lập trình mạng. Ngôn ngữ này hoạt động dựa trên nền tảng
JDK.
Java là một ngôn ngữ lập trình dạng lập trình hướng đối tượng
(OOP). Khác với phần lớn ngôn ngữ lập trình thông thường, thay vì
biên dịch mã nguồn thành mã máy hoặc thông dịch mã nguồn khi chạy,
Java được thiết kế để biên dịch mã nguồn thành bytecode, bytecode sau
đó sẽ được môi trường thực thi (runtime environment) chạy. Bằng cách
này, Java thường chạy chậm hơn những ngôn ngữ lập trình thông dịch
khác như C++, Python, Perl, PHP, C#...
Java được tạo ra với tiêu chí "Viết (code) một lần, thực thi khắp
nơi" ("Write Once, Run Anywhere" (WORA)). Chương trình phần
mềm viết bằng Java có thể chạy trên mọi nền tảng (platform) khác nhau
thông qua một môi trường thực thi với điều kiện có môi trường thực thi
thích hợp hỗ trợ nền tảng đó. Phương châm của Java:
o Nó sẽ được "đơn giản, hướng đối tượng và quen thuộc".
o Nó sẽ được "mạnh mẽ và an toàn".
o Nó sẽ được "kiến trúc trung lập và di động".
o Nó sẽ được thực thi với "hiệu suất cao".
o Nó sẽ được "thể hiện, phân luồng và năng động".
SVTH: Trần Thanh Liêm 07T2
2.3. Xây dựng các chương trình
2.3.1. Chương trình bài tập 1 và 2: RMI Calculator (code được đặt
trong mục Chương trình)
Hình 1: Chương trình Calculator Server đã sẵn sàng.
Hình 2: Cho 2 số 8 và 4, thông báo sum, sub, mul, div và mod của 2 số này.
2.3.2. Chương trình bài tập 3: RMI Database (code được đặt trong
mục Chương trình)
a) Chương trình Server
Định nghĩa các hàm:
- login() kết nối cơ sở dl và chứng thực người dùng. Trả lại giá trị số nguyên
tương ứng với quyền của user.
- insert() chèn một sinh viên vào csdl
- delete() xóa một sing viên khỏi csdl
- update() cập nhật thông tin sinh viên
- view() xem danh sách sinh viên
Gọi các hàm từ client để lưu vào file log.txt
- getClientIP() : Hàm lấy địa chỉ IP của client
- getDate() : Hàm lấy thời gian của client
b) Chương trình Client
8
Bài tập Thực hành Lập trình Mạng nâng cao. 9
Tạo các giao diện login và các giao diện thao tác với csdl phía server như
xem, xóa, sửa danh sách sinh viên
Gọi các hàm từ server
Định nghĩa các hàm getClientIP(), getDate() cho server gọi từ xa
Hình 3: Chương trình RMI Database Server đã sẵn sàng.
Hình 4: Chương trình RMI Database Client login với user = liem, pass = 1.
SVTH: Trần Thanh Liêm 07T2
Hình 5: RMI Database Client user liem login thành công với quyền user = 1.
Hình 6: RMI Database Client click vào nút View Database.
10
Bài tập Thực hành Lập trình Mạng nâng cao. 11
Hình 7: RMI Database Client thực hiện việc Insert vào database.
Hình 8:RMI Database Client thông báo cho người dùng Insert thành công.
SVTH: Trần Thanh Liêm 07T2
Hình 9: RMI Database Client click vào View để kiểm tra lại kết quả.
12
Bài tập Thực hành Lập trình Mạng nâng cao. 13
TÀI LIỆU THAM KHẢO
[1] Bài giảng Lập trình mạng Nâng Cao – TS. Huỳnh Công Pháp.
[2] http://vi.wikipedia.org
[3] http://www.javavietnam.org/
[4] http://vietnamcoding.net/
[5] http://www.ddth.com/
[6] Và một số trang web khác…