17
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 : 07T2 Nhóm : 10B Giảng viên hướng dẫn : ThS. Nguyễn Văn Nguyên

Tran Thanh Liem_07T2_Thuc Hanh Lap Trinh Mang Nang Cao_Nhom 10B

Embed Size (px)

Citation preview

Page 1: Tran Thanh Liem_07T2_Thuc Hanh Lap Trinh Mang Nang Cao_Nhom 10B

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

Page 2: Tran Thanh Liem_07T2_Thuc Hanh Lap Trinh Mang Nang Cao_Nhom 10B

SVTH: Trần Thanh Liêm 07T2

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN

..................................................................................................................................................

..................................................................................................................................................

..................................................................................................................................................

..................................................................................................................................................

..................................................................................................................................................

..................................................................................................................................................

..................................................................................................................................................

..................................................................................................................................................

..................................................................................................................................................

..................................................................................................................................................

..................................................................................................................................................

..................................................................................................................................................

..................................................................................................................................................

..................................................................................................................................................

..................................................................................................................................................

..................................................................................................................................................

..................................................................................................................................................

..................................................................................................................................................

..................................................................................................................................................

..................................................................................................................................................

..................................................................................................................................................

..................................................................................................................................................

2

Page 3: Tran Thanh Liem_07T2_Thuc Hanh Lap Trinh Mang Nang Cao_Nhom 10B

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

Page 4: Tran Thanh Liem_07T2_Thuc Hanh Lap Trinh Mang Nang Cao_Nhom 10B

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

Page 5: Tran Thanh Liem_07T2_Thuc Hanh Lap Trinh Mang Nang Cao_Nhom 10B

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

Page 6: Tran Thanh Liem_07T2_Thuc Hanh Lap Trinh Mang Nang Cao_Nhom 10B

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

Page 7: Tran Thanh Liem_07T2_Thuc Hanh Lap Trinh Mang Nang Cao_Nhom 10B

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".

Page 8: Tran Thanh Liem_07T2_Thuc Hanh Lap Trinh Mang Nang Cao_Nhom 10B

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

Page 9: Tran Thanh Liem_07T2_Thuc Hanh Lap Trinh Mang Nang Cao_Nhom 10B

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.

Page 10: Tran Thanh Liem_07T2_Thuc Hanh Lap Trinh Mang Nang Cao_Nhom 10B

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

Page 11: Tran Thanh Liem_07T2_Thuc Hanh Lap Trinh Mang Nang Cao_Nhom 10B

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.

Page 12: Tran Thanh Liem_07T2_Thuc Hanh Lap Trinh Mang Nang Cao_Nhom 10B

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

Page 13: Tran Thanh Liem_07T2_Thuc Hanh Lap Trinh Mang Nang Cao_Nhom 10B

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…