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

BÁO CÁO ĐỒ ÁN4

29 0 0

Đ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 29
Dung lượng 593,95 KB

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

Nội dung

Dự kiến kết quả - Hiểu được giao thức TCP/IP - Thành thạo ngôn ngữ lập trình Java - Hiểu được các khái niệm quan trọng trong lập trình mạng - Hiểu được cách thức hoạt động của mô hình Cl

Trang 1

BÁO CÁO ĐỒ ÁN

CƠ SỞ 4

ĐỀ TÀI : XÂY DỰNG CHƯƠNG TRÌNH

CHAT BẰNG RMI

Họ và tên: Trần Thị Mỹ Phượng Mã sinh viên: 18IT095

Nguyễn Thị Thu Mai Mã sinh viên: 18IT082

Lớp: 18IT2

Giảng viên hướng dẫn: ThS.Hà Thị Minh Phương

Đà Nẵng, ngày 22 tháng 11 năm 2020

Trang 2

ĐẠI HỌC ĐÀ NẴNG KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

BÁO CÁO ĐỒ ÁN

CƠ SỞ 4

ĐỀ TÀI : XÂY DỰNG CHƯƠNG TRÌNH

CHAT BẰNG RMI

Họ và tên: Trần Thị Mỹ Phượng Mã sinh viên: 18IT095

Nguyễn Thị Thu Mai Mã sinh viên: 18IT082

Lớp: 18IT2

Giảng viên hướng dẫn: ThS.Hà Thị Minh Phương

Đà Nẵng, ngày 22 tháng 11 năm 2020

Trang 3

LỜI CẢM ƠN!

Đề án này được hoàn thành tại Khoa Công Nghệ Thông Tin và Truyền thôngĐại học Đà Nẵng Trong quá trình học tập và hoàn thành đồ án em đã nhận đượcrất nhiều sự giúp đỡ, vì vậy chúng em muốn viết lời cảm ơn này đến:

Chúng em xin gửi lời cảm ơn chân thành tới thầy cô Khoa Công NghệThông Tin và Truyền thông Đại học Đà Nẵng đã giảng dạy cho chúng em thờigian qua Đặc biệt là Ths Hà Thị Minh Phương là người trực tiếp chỉ bảo vàhướng dẫn em hoàn thành đồ án này

Bên cạnh đó để hoàn thành đồ án này em đã nhận được những lời khuyên sựgiúp đỡ tận tình từ anh chị em bạn bè chúng em xin cảm ơn

Mặc dù đã vận dụng tất cả kiến thức đã được học tập và kinh nghiệm thực tế

từ bản thân để hoàn thành đề án này, song có thể còn có những mặt hạn chế,thiếu sót Em rất mong nhận được ý kiến đóng góp và sự chỉ dẫn của các thầy côgiáo

Trang 4

NHẬN XÉT

(Lời nhận xét của GVHD)

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

Đà Nẵng tháng 12 năm 2020

Trang 5

MỤC LỤC

LỜI CẢM ƠN

NHẬN XÉT

DANH MỤC HÌNH

DANH MỤC TỪ VIẾT TẮT

KẾ HOẠCH THỰC HIỆN

TỔNG QUAN VỀ ĐỀ TÀI 4

1.Lý do thực hiện đề tài 4

3 Phương pháp triển khai đề tài 4

4 Nội dung của báo cáo 5

5 Dự kiến kết quả 5

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 6

1.1 Tổng quan về lập trình mạng 6

1.2 Ngôn ngữ 7

1.2.1 Ngôn ngữ lập trình mạng 7

1.2.2 Ngôn ngữ Java 8

1.3.1 Công cụ hỗ trợ Eclipse 9

CHƯƠNG 2 PHÂN TÍCH THIẾT KẾ THUẬT TOÁN 12

2.1 Nội dung bài toán 12

2.3 Giao thức RMI 13

2.3.1 Kiến trúc RMI 14

2.3.2 Cách hoạt động RMI 16

2.3.3 Sự phân lớp của RMI 16

Trang 6

2.3.4 Ưu và nhược điểm của RMI 17

2.4 Xây dựng chương trình 17

2.4.1 Thiết kế giao diện 17

2.4.2 Xây dựng chức năng 19

CHƯƠNG 4: DEMO VÀ KẾT LUẬN 21

4.1 Kết quả đạt được 21

4.2 Hạn chế 21

4.3 Hướng phát triển 21

TÀI LIỆU THAM KHẢO 22

DANH MỤC HÌN Hình 1 Mô hình lập trình mạng 6

Hình 5 Mô hình Client Server 12

Hình 6 Lời triệu gọi phương thức từ xa được thi hành trên Java ở xa 14

Hình 7 Giao diện và lớp mô tả giao diện 15

Hình 8 Minh họa quá trình Client kêu gọi trong RMI 15

Hình 9 Cách hoạt động RMI 16

Hình 10 Sự phân lớp của RMI 16

Hình 11 Giao diện đăng nhập 18

Hình 12 Giao diện chat 18

Hình 13 Chức năng gửi tin nhắn 19

Hình 14 Chức năng gửi File 20

Trang 7

DANH MỤC TỪ VIẾT TẮT

UDP User Datagram Protocol Giao thức gói dữ liệu người dùngTCP Transmisstion Control Protocol Giao thức điều khiển truyền dẫn

HTTP Hypertext Transfer Protocol Giao thức truyền siêu văn bản

MAC Medium Access Control

Kiểm soát truy cập môi trườngtruyền thông

Internet Engineering Task

ISP Internet service Providers Nhà cung cấp dịch vụ Internet

Trang 8

Chạy thử kiểm tra khắc phục

Làm báo cáo kết quả Trần Thị Mỹ Phượng

25/12/2020 Làm báo cáo và trình bày đề tài, nộp kết quả

Trang 10

Hình thức trao đổi thông tin là một mô hình được gọi là mô hình Client-Server(Mô hình chủ-khách) Mô hình này 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 mọi trang web hiện có Ý tưởng của

mô hình này là máy khách sẽ gửi một yêu cầu cho máy chủ để máy chủ xử lý và trảkết quả về cho máy khách

Mô hình này đang được ứng dụng rất rộng rãi trong các công ty cũng như cácquán net, nơi có những người dùng cần chia sẻ thông tin một cách bí mật mà khôngthông qua Internet Trước thực tế đó, em đã chọn đề tài “Xây dựng ứng dụng chatđơn giản theo mô hình Client-Server bằng RMI”

2 Phạm vi, đối tượng nghiên cứu

Phạm vi: Đề tài này hướng tới việc xây dụng một ứng dụng chat đơn giản trong phạm vi nhỏ như một văn phòng hay một quán net

Đối tượng: Đối tượng mà đề tài hướng đến là các công ty mới thành lập hay cácquán net mới mở, nơi cần những ứng dụng chat như thế này

3 Phương pháp triển khai đề tài

Về mặt lý thuyết

- Tìm kiếm tài liệu liên quan

4

Trang 11

- Tìm hiểu về giao thức mạng TCP/IP, ngôn ngữ lập trình Java

- Tìm hiểu về Socket – Khái niệm quan trọng trong lập trình mạng

- Tìm hiểu cách thức hoạt động của mô hình Client-Server

Về mặt lập trình

- Sử dụng ngôn ngữ lập trình Java và trình biên tập mã Eclipse Java để xây dựng ứng dụng

4 Nội dung của báo cáo

- Chương 1: Trình bày cơ sở lý thuyết

- Chương 2: Phân tích thiết kế bài toán

- Chương 3: Demo chương trình và kết luận

5 Dự kiến kết quả

- Hiểu được giao thức TCP/IP

- Thành thạo ngôn ngữ lập trình Java

- Hiểu được các khái niệm quan trọng trong lập trình mạng

- Hiểu được cách thức hoạt động của mô hình Client – Server

- Xây dựng được một chương trình chat hoàn thiện với các chức năng

- Chat nhiều client

- Chat Group

- Gửi được file

- Gửi được hình ảnh

5

Trang 12

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1.1 Tổng quan về lập trình mạng

Ngày này khi nói đến phát triển các ứng dụng phần mềm, đa số là người tamuốn nói đến chương trình có khả năng làm việc trong môi trường mạng tích hợpnói chung và mạng máy tính nói riêng Từ các chương trình kế toán doanh nghiệp,quản lý, trò chơi, điều khiển đều là các chương trình ứng dụng mạng

Vấn đề lập trình mạng liên quan đế nhiều lĩnh vực kiến thức khác nhau Từkiến thức sử dụng ngôn ngữ lập trình, phân tích thiết kế hệ thống, kiến thức hệthống mạng, mô hình xây dựng chương trình ứng dụng mạng, kiến thức về cơ sở

dữ liệu cho đến kiến thức truyền thông, các kiến thức các lĩnh vực liên quan khácnhư mạng điện thoại di động, PSTN, hệ thống GPS, các mạng như BlueTooth,WUSB, mạng sensor Nhưng có thể nói vấn đề lập trình mạng có 3 vấn đề chínhcốt lõi tích hợp trong lập trình ứng dụng mạng và được thể hiện như hình

Hình 1 Mô hình lập trình mạng

6

Trang 13

Hay nói cách khác, vấn đề lập trình mạng có thể được định nghĩa với công thứcsau:

cụ thể và thói quen lập trình mà người lập trình có thể chọn ngôn ngữ phù hợp đểphát triển các ứng dụng mạng Các ngôn ngữ lập trình phổ biến hiện nay gồmnhững ngôn ngữ sau:

- C/C++: Ngôn ngữ lập trình rất mạnh và phổ biến, dùng để viết mọi loại ứngdụng trong đó có ứng dụng mạng

- Java: Ngôn ngữ lập trình khá thông dụng và hỗ trợ trên nhiều môi trường,trong đó có thể viết ứng dụng chạy trên điện thoại di động

- C#: Ngôn ngữ lập trình cũng rất mạnh và dễ sử dụng, chỉ hỗ trợ trên họ hệđiều hành Windows của Microsoft

- Python, Perl, Php…: Các ngôn ngữ thông dịch, sử dụng để viết nhanh cáctiện ích nhỏ một cách nhanh chóng, trong đó có thể sử dụng để viết ứngdụng mạng

Với đề tài này em sẽ thực hiện lập trình mạng dựa trên ngôn ngữ C#

7

Trang 14

1.2.2 Ngôn ngữ Java

Java (phiên âm Tiếng Việt: "Gia-va") là một ngôn ngữ lập trình hướng đối

tượng (OOP) và dựa trên các lớp (class) Khác với phần lớn ngôn ngữ lập trìnhthô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

Trong lập trình Java thông thường thì tất cả các đối tượng tạo nên một chương trình sẽ nằm trên cùng một máy và trong cùng một tiến trình hay trên cùng một máy ảo Java (JVM)

Khi một đối tượng gọi một phương thức trên một đối tượng khác thì đối tượnggọi phải biết địa chỉ vùng nhớ của đối tượng bị gọi và có thể chỉ thay đổi bộ đếmchương trình máy để bắt đầu chạy trong một đối tượng mới Địa chỉ của đối tượngđược gọi được lưu trữ trong ngăn xếp của máy, vì thế khi phương thức được gọi trả

về giá trị thì địa chỉ trong ngăn xếp sẽ được nạp lại vào trong bộ đếm chương trìnhmáy và tiếp tục thực thi trở lại trong đối tượng gọi Dãy các bước trên là chung đốivới tất cả các ngôn ngữ lập trình mà thực thi trong một tiến trình đơn, trên cùngmột máy

Nền Java lý tưởng cho việc lập trình phân tán vì nhiều lý do:

- Nền Java định nghĩa một kích thước nhất quán và định dạng cho các kiểu cơbản, như kiểu số nguyên và số thực, cũng như việc thể hiện các số giống nhau chotất cả cài đặt trên nền Đây là phương tiện để cơ chế chuyển tải có thể được đơngiản hóa một cách quan trọng vì nó không phải thực hiện bất kỳ dịch chuyển hayđiều chỉnh nào khi nói chuyện với phía bên kia

- Các hàm thư viện chính dành cho lập trình phân tán trên Java là RMI lại làmột phần trong phiên bản chuẩn của ngôn ngữ Java và vì thể nó có trên tất cả các

hệ thống hỗ trợ Java

8

Trang 15

- Các bộ nạp lớp (classloader) của Java có thể tự động tải các đoạn mã bênphía máy khách đối với mô hình nặng về phía máy khách hay các ứng dụng nganghàng.

- Các tham số của Java có thể được truyền tham chiếu hay tham trị

- Nếu chúng ta không chắc rằng ngôn ngữ Java có trên tất cả các phía của mộtứng dụng phân tán, chúng ta vẫn có thể dùng ngôn ngữ để gọi các đối tượng trên

hệ thống khác được viết bằng một ngôn ngữ lập trình khác, ví dụ C++, bằng cách

sử dụng CORBA

- Nền Java cũng hỗ trợ cho nhiều kỹ thuật lập trình phân tán khác nhu môhình lập trình socket

Ưu điểm của việc tính toán phân tán:

- Tính toán phân tán được dùng khi có một nguồn tài nguyên trung tâm, ví dụnhư một cơ sở dữ liệu mà chúng ta muốn chia sẻ cho nhiều người sử dụng haynhiều máy khách

- Tính toán phân tán được dùng để kết hợp sức mạnh tính toán của nhiều hệthống để giải quyết một bài toán hiệu quả và nhanh hơn việc thực hiện với một hệthống đơn

Nhiều hệ thống máy tính có thể được cấu hình theo nhiều cách để chia sẻ xử

lý, bao gồm chia sẻ bộ nhớ, chia sẽ đĩa, và còn chia sẻ kênh giao tiếp chung Kỹthuật gần đây cho phép các hệ thống mà các thành phần vật lý ở xa nhau có thể hợptác với nhau trong việc giải quyểt các bài toán tính toán

Cũng trên ảnh hưởng của chủ đề sức mạnh tính toán thì sự trỗi dậy của mạngInternet và giao thức TCP/IP đi kèm cũng dẫn đến việc kết nối chưa hề thấy củahàng triệu các hệ thống máy tính Đối với một vài ứng dụng thì cần sức mạnh tínhtoán để giải quyết các bài toán

1.3 Công cụ và thư viện hỗ trợ

1.3.1 Công cụ hỗ trợ Eclipse

9

Trang 16

Eclipse là 1 công cụ hỗ trợ lập trình mã nguồn mở được phát triển bởi IBM.

Eclipse như một môi trường phát triển Java tích hợp (IDE), với Eclipse chúng ta

có thể mở rộng hơn mã nguồn bằng cách chèn thêm các plugins cho project Plug-in Development Environment) Mặc dù Eclipse được viết bằng ngôn ngữ lậptrình Java, nhưng việc sử dụng nó không hạn chế chỉ cho ngôn ngữ Java Ví dụ,Eclipse hỗ trợ sẵn hoặc có thể cài thêm các plugins để hỗ trợ cho các ngôn ngữ lậptrình như C/C + + và COBOL Ngoài ra, còn rất nhiều ngôn ngữ khác như PHP,Groovy,

(PDE-Eclipse còn hỗ trợ cho lập trình viên code theo các mô hình phát triển nhưMVC, tạo thêm các lib hỗ trợ phát triển phần mềm

Ưu điểm

- Tạo thuận lợi cho tích hợp liền mạch các công cụ bên trong mỗi một vàxuyên qua nhiều kiểu nội dung và các nhà cung cấp công cụ khác nhau

- Hỗ trợ việc xây dựng nhiều công cụ

- Hỗ trợ một tập hợp không hạn chế các nhà cung cấp công cụ, bao gồm cảcác nhà cung cấp phần mềm độc lập (ISV)

- Hỗ trợ các công cụ thao tác các kiểu nội dung bất kỳ (bao gồm cả HTML,Java, C, JSP, EJB, XML, và GIF)

- Hỗ trợ cả môi trường phát triển ứng dụng GUI lẫn không dựa trên GUI

- Chạy trên nhiều hệ điều hành, bao gồm cả Windows và Linux

- Lợi dụng tính phổ biến của ngôn ngữ Java để viết các công cụ

- Do sử dụng SWT/JFace nên có lẽ load nhanh hơn

Trang 17

- Tốn bộ nhớ máy: chạy eclipse cũng khá tốn bộ nhớ máy tính nên để sử dụng

nó máy của bạn cũng cần có cấu hình tương đối cao

- Thiếu tính nhất quán vì có nhiều plugins quá

1.3.2 Thư viện hỗ trợ

Việc lập trình mạng phụ thuộc rất nhiều vào các thư viện hỗ trợ đến từ hệ thống.Tùy thuộc vào nền tảng phát triển ứng dụng mà có thể sử dụng các thư viện khácnhau Java hỗ trợ các lớp cần thiết để cài đặt các ứng dụng Client-Server theo kiểuRMI trong các gói: java.rmi Trong số đó các lớp thường được dùng là:

Trang 18

CHƯƠNG 2 PHÂN TÍCH THIẾT KẾ THUẬT TOÁN 2.1 Nội dung bài toán

Đề tài tìm hiểu về giao thức RMI, xây dựng chương trình trao đổi thông tindựa trên giao thức RMI

Chương trình trao đổi thông tin qua giao thức RMI: sử dụng theo mô hìnhclient- server và giao tiếp với nhau qua giao thức RMI trên ngôn ngữ lập trìnhJava, sử dụng Java Eclipes

Xây dựng được một chương trình chat hoàn thiện với các chức năng:

- Chat nhiều client

- Chat Group

- Gửi được file

- Gửi được hình ảnh

2.2 Mô hình Client/Server

Mô hình Client/Server là một kỹ thuật tính toán mới, trông đó Client đơn giản

là một đối tượng cần được phuc vụ, thông thường là các ứng dụng cần đến dữ liệuhay dịch vụ từ chương trình khác và Server là đối tượng phục vụ những yêu cầu đó

do nhiều Client gửi đến

12

Trang 19

Hình 2 Mô hình Client Server

Máy tính đóng vai trò là máy chủ – Server: Là máy tính có khả năng cung cấptài nguyên và các dịch vụ đến các máy trạm khác trong hệ thống mạng Serverđóng vai trò hỗ trợ cho các hoạt động trên máy trạm client diễn ra hiệu quả hơn.Máy tính đóng vai trò là máy trạm – Client: Với vai trò là máy trạm, chúng sẽkhông cung cấp tài nguyên đến các máy tính khác mà chỉ sử dụng tài nguyên đượccung cấp từ máy chủ Một client trong mô hình này có thể là một server cho môhình khác, tùy thuộc vào nhu cầu sử dụng của người dùng

Để máy khách và máy chủ có thể giao tiếp được với nhau thì giữa chúng phải

có một chuẩn nhất định, và chuẩn đó được gọi là giao thức Một số giao thức chuẩnđược sử dụng rộng rãi hiện nay như TCP/IP, OSI, ISDN, X.25, Lan-to-Lan, Khi

đó, nếu máy khách muốn lấy được thông tin từ máy chủ, chúng phải tuân theo mộtgiao thức mà máy chủ đó đưa ra Nếu yêu cầu đó được chấp nhận thì máy chủ sẽthu thập thông tin và trả về kết quả cho máy khách yêu cầu Bởi thông thường,server luôn trong trạng thái sẵn sàng nhận yêu cầu từ các client, nên chỉ cần clientgửi tín hiệu và chấp nhận yêu cầu là server sẽ trả về kết quả trong thời gian ngắnnhất có thể

13

Trang 20

Việc ứng dụng mô hình Client/Server sẽ làm giảm chi phí, đồng thời làm tăngtốc dộ, điều này rất cần thiết trông việc truy cập dữ liệu.

2.3 Giao thức RMI

RMI (Remote Method Invoke)– triệu gọi phương thức từ xa - là công nghệđược SUN giới thiệu đầu tiên trong JDK 1.1 (2/1997) đã mở ra một thời kì mới cholĩnh vực lập trình mạng Được thiết kế tương đối dễ sử dụng nhưng RMI cũng làmột công nghệ rất mạnh, cung cấp đầy đủ các công cụ để người lập trình có thểphát triển ứng dụng phân tán một cách tốt nhất

Hình 3 Lời triệu gọi phương thức từ xa được thi hành trên Java ở xa

Mục đích chính của việc thiết kế ra RMI là cho phép người lập trình phát triểncác chương trình phân tán bằng Java với cú pháp và ngữ nghĩa giống như lập trìnhthông thường Để làm được việc này, họ đã ánh xạ các lớp và đối tượng làm việctrong một máy ảo Java đơn thành các lớp và đối tượng làm việc trong một môitrường phân tán

2.3.1 Kiến trúc RMI

Kiến trúc RMI dựa trên một nguyên lý quan trọng: định nghĩa hành vi vàviệc mô tả hành vi là hai khái niệm riêng biệt RMI chấp nhận mã của định

14

Ngày đăng: 04/10/2021, 13:14

w