Kết nối các ứng dụng thông qua Socket Hình 2.1.. Sơ đồ hoạt động của Use-case Đăng nhập Hình 2.3.. Sơ đồ hoạt động của Use-case Đăng xuất Hình 2.5.. Sơ đồ hoạt động của Use-case Quản lý
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN &
TRUYỀN THÔNG VIỆT HÀN
Trang 2TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN &
TRUYỀN THÔNG VIỆT - HÀN
KHOA KHOA HỌC MÁY TÍNH
Đà Nẵng, 07 tháng 11 năm 2024
Trang 3NHẬN XÉT
………
………
………
………
………
………
………
Xác nhận của GVHD
Trang 4LỜI CẢM ƠN
Đầu tiên, nhóm em xin gửi lời cảm ơn chân thành đến Trường đại học Công nghệ Thông tin và Truyền thông Việt - Hàn đã đưa môn học Lập trình mạng vào chương trình giảng dạy Đặc biệt, chúng em xin gửi lời cảm ơn sâu sắc đến thầy Lê Tân đã tận tình hướng dẫn, giảng dạy và truyền đạt những kiến thức quý báu cho chúng em trong suốt thời gian học tập vừa qua Trong thời gian tham gia lớp học, chúng em đã có thêm cho mình nhiều kiến thức bổ ích, tinh thần học tập hiệu quả, nghiêm túc Đây chắc chắn sẽ là những kiến thức quý báu, là hành trang để chúng
em có thể vững bước sau này
Bộ môn Lập trình mạng là môn học thú vị, vô cùng bổ ích và có tính thực tế cao Đảm bảo cung cấp đủ kiến thức, gắn liền với nhu cầu thực tiễn của sinh viên Tuy nhiên, do vốn kiến thức còn nhiều hạn chế và khả năng tiếp thu thực tế cònnhiều bỡ ngỡ Mặc dù chúng em đã cố gắng hết sức nhưng chắc chắn bài báo cáokhó có thể tránh khỏi những thiếu sót và nhiều chỗ còn chưa chính xác, kính mongthầy cô xem xét và góp ý để bài báo cáo của chúng em được hoàn thiện hơn.Chúng em xin chân thành cảm ơn!
Trang 5MỤC LỤC
Trang 6DANH MỤC HÌNH ẢNH 7
CHƯƠNG 1 CƠ SỞ LÝ THUYẾT 8
1.1 Tổng quan 8
1.2 Các mô hình mạng máy tính 9
1.2.2 Mô hình mạng hàng ngang (Peer-to-Peer) 9
1.2.3 Mô hình lai(Hybrid) 9
1.3 Giao thức TCP/IP và UDP 10
1.3.2 Giao thức TCP(Tranmission Control protocol) 10
1.3.3 Giao thức UDP 10
1.4 Ngôn ngữ Java và Lập trình bằng Socket 11
1.4.2 Lập trình socket cơ bản với tcp/ip trong java 11
1.4.3 Lập trình TCP Socket với Java 11
CHƯƠNG 2 PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 12
2.1 Sơ lược về phần mềm Remote - Desktop 12
2.2 Danh sách các Stakeholder 12
2.3 Danh sách các Use-case 13
2.4 Đặc tả Use-case 14
2.4.1 Đặc tả Use-case Đăng nhập 14
2.4.2 Đặc tả Use-case Đăng ký 15
2.4.3 Đặc tả Use-case Đăng xuất 16
2.4.4 Đặc tả Use-case Quản lý ID và Tài khoản 17
2.5 Sơ đồ hoạt dộng 18
2.5.1 Sơ đồ hoạt động của Use-case Đăng nhập 18
2.5.2 Sơ đồ hoạt động của Use-case Đăng ký 19
2.5.3 Sơ đồ hoạt động của Use-case Đăng xuất 19
2.5.4 Sơ đồ hoạt động của Use-cas Quản lý ID và Tài khoản 20
2.6 Sơ đồ trình tự 21
2.6.1 Sơ đồ trình tự của Use-case Đăng nhập 21
Trang 72.6.2 Sơ đồ trình tự của Use-case Đăng ký 21
2.6.3 Sơ đồ trình tự của Use-case Đăng xuất 22
2.6.4 Sơ đồ trình tự của Use-case Quản lý ID và Tài khoản 22
CHƯƠNG 3 THIẾT KẾ PHẦN MỀM 23
3.1 Thiết kế kiến trúc 23
3.1.1 Hệ thống được thiết kế theo mô hình Client - Server 23
3.1.2 Danh sách các thành phần trong mô hình Client - Server 23
3.2 Thiết kế giao diện phần mềm 24
3.2.1 Sơ đồ hoạt động của phần mềm 24
3.2.2 Danh sách các form màn hình 24
3.3 Đặc tả giao diện tương tác và xử lý 25
3.3.1 Giao diện tương tác 25
3.3.2 Các sự kiện xử lý 25
3.3.3 Các Control để xử lý 26
CHƯƠNG 4 KIỂM NGHIỆM PHẦN MỀM 27
4.1 Unit Testing 27
4.1.1 Test case kịch bản “Đăng nhập sai thông tin ID hoặc Password” 27
4.1.2 Test case kịch bản “Đăng ký thông tin không hợp lệ hoặc đã đăng ký” 28
KẾT LUẬN 29
1 Những kết quả đã đạt được 29
2 Hạn chế, khó khăn và hướng phát triển 29
TÀI LIỆU THAM KHẢO 30
Trang 8DANH MỤC HÌNH ẢNH
Hình 1.1 Mô hình Client Server -
Hình 1.2 Mô hình Peer-to-Peer
Hình 1.3 Kết nối các ứng dụng thông qua Socket
Hình 2.1 Biểu đồ sơ lược về phần mềm Remote - Desktop
Hình 2.2 Sơ đồ hoạt động của Use-case Đăng nhập
Hình 2.3 Sơ đồ hoạt động của Use-case Đăng ký
Hình 2.4 Sơ đồ hoạt động của Use-case Đăng xuất
Hình 2.5 Sơ đồ hoạt động của Use-case Quản lý ID và Đăng nhập
Hình 2.6 Sơ đồ trình tự của Use-case Đăng nhập
Hình 2.7 Sơ đồ trình tự của Use-case Đăng ký
Hình 2.8 Sơ đồ trình tự của Use-case Đăng xuất
Hình 2.9 Sơ đồ trình tự của Use-case Quản lý ID và Tài khoản
Hình 3.1 Mô hình Client - Server
Hình 3.2 Sơ đồ hoạt động của phần mềm Remote - Desktop
Hình 3.3 Giao diện tương tác của Remote Desktop
Trang 9CHƯƠNG 1 CƠ SỞ LÝ THUYẾT
1.1 Tổng quan
Phát biểu bài toán
Ngày nay việc kết nối với nhau trên thế giới đang ngày càng được phát triểnnhưng vẫn còn những bất tiện về mặt trao đổi thông tin khi 2 bên không hiểu ý nhau
Vì thế nhằm đáp ứng nhu cầu kết nối và trao đổi thông tin với nhau qua màn hìnhbằng cách kết nối từ xa Nhóm em đã xây dựng và phát triển ứng dụng Remote-Desktop trên Desktop dựa trên ngôn ngữ Java và thư viện javx.mail.*
Sơ lược về lập trình mạng
Lập trình mạng là nhiệm vụ cơ bản để phát triển các ứng dụng trong hệ thốngdoanh nghiệp, từ chương trình phần mềm quản lý như kế toán, nhân sự… cho đếnứng dụng giải trí là trò chơi, điều khiển…
Lập trình mạng được xây dựng theo công thức:
Lập trình mạng (LTM) = Kiến thức mạng truyền thông + Mô hình LTM + Ngôn
1.2.1 Mô hình Client - Server
Các máy trạm được nối với các máy chủ, nhận quyền truy nhập mạng và tài nguyên mạng từ các máy chủ
Trang 10Hình 1.1 Mô hình Client Server -
1.2.2 Mô hình mạng hàng ngang (Peer-to-Peer)
Hai hay nhiều máy tính chia s‚
các thiết bị như máy in màkhông cần đến máy chủ hay phần mềm máy chủ, đó chính là mô hình mạng ngang hàng
1.3 Giao thức TCP/IP và UDP
1.3.1 Giao thức TCP(Tranmission Control protocol).
TCP là giao thức truyền tải hướng kết nối (connection-oriented), nghĩa là phải thực hiện thiết lập kết nối với đầu xa trước khi thực hiện truyền dữ liệu Tiến trình thiết lập kết nối ở TCP được gọi là tiến trình bắt tay 3 bước threeway handshake). (
Trang 11Cung cấp cơ chế báo nhận (Acknowledgement) :Khi A gửi dữ liệu cho B, B nhận được thì gửi gói tin cho A xác nhận là đã nhận Nếu không nhận được tin xác nhận thì A sẽ gửi cho đến khi B báo nhận thì thôi.
Cung cấp cơ chế đánh số thứ tự gói tin (sequencing) cho các đơn vị dữ liệuđược truyền, sử dụng để ráp các gói tin chính xác ở điểm nhận và loại bỏ gói tintrùng lặp
Có các cơ chế điều khiển luồng thích hợp (flow control) để tránh nghẽn xảy ra
Hỗ trợ cơ chế full-duplex ( truyền và nhận dữ liệu cùng một lúc)
Phục hồi dữ liệu bị mất trên đường truyền ( A gửi B mà không thấy xác nhận sẽgửi lại)
1.3.2 Giao thức UDP
➢ Ngược lại với giao thức TCP thì UDP là giao thức truyền tải hướng không kết nối (connectionless) Nó sẽ không thực hiện thao tác xây dựng kết nối trước khitruyền dữ liệu mà thực hiện truyền ngay lập tức khi có dữ liệu cần truyền (kiểutruyền best effort) => truyền tải rất nhanh cho dữ liệu của lớp ứng dụng
➢ Không đảm bảo tính tin cậy khi truyền dữ liệu và không có cơ chế phục hồi dữliệu ( nó không quan tâm gói tin có đến đích hay không, không biết gói tin có bịmất mát trên đường đi hay không) => dễ bị lỗi
➢ Không thực hiện các biện pháp đánh số thứ tự cho các đơn vị dữ liệu đượctruyền…
➢ Nhanh và hiệu quả hơn đối với các dữ liệu có kích thước nhỏ và yêu cầu khắtkhe về thời gian
➢ Bản chất không trạng thái nên UDP hữu dụng đối với việc trả lời các truy vấnnhỏ với số lượng lớn người yêu cầu
1.4 Ngôn ngữ Java và Lập trình bằng Socket
Trang 12Hình 1.3 Kết nối các ứng dụng thông qua Socket
1.4.1 Lập trình socket cơ bản với tcp/ip trong java
Socket được biết đến là cánh cửa giao tiếp giữa hai tiến trình ứng dụng Socket
hỗ trợ nhiều ngôn ngữ (C, java, perl, python,…) cũng như nhiều platform (*nix, Windows,…) Socket được viết bằng các ngôn ngữ khác nhau và chạy trên bất kỳ platform nào đều có thể giao tiếp với nhau Trong bài viết này mình gửi đến các bạn khái niệm cơ bản về Socket cũng như cách lập trình Socket với các loại giao thức
1.4.2 Lập trình TCP Socket với Java
Đúng như tính chất của TCP chúng ta cần có liên kết 2 chiều trước khi server vàclient có thể trao đổi thông điệp với nhau
Ban đầu, phía server tạo Socket được ràng buộc với một cổng (port number) đểchờ nhận yêu cầu từ phía client
Tiếp đến phía client yêu cầu server bằng cách tạo một Socket TCP trên máykèm với địa chỉ IP và port number của tiến tình tương ứng trên máy server Khiclient tạo Socket, client TCP tạo liên kết với server TCP và chờ chấp nhận kết nối từserver
TCP cung cấp dịch vụ truyền dòng tin cậy và có thứ tự giữa client và server,giữa máy chủ và máy nhận chỉ có 1 địa chỉ IP duy nhất Thêm vào đó, mỗi thôngđiệp truyền đi đều có xác nhận trả về
Sau đây là một ví dụ ứng dụng đơn giản về lập trình TCP Socket với Java
Miêu tả ứng dụng:
➢ Client đọc dòng văn bản nhập từ bàn phím người dùng, gửi tới server quaSocket
➢ Server đọc các dòng văn bản gửi từ Socket
➢ Server sẽ chuyển lại dòng văn bản kèm theo “Server accepted” tới phía clientqua Socket
➢ Client đọc dòng văn bản từ socket và in ra dòng văn bản nhận được từ Server
Trang 13CHƯƠNG 2 PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
2.1 Sơ lược về phần mềm Remote Desktop -
Hình 2.1 Biểu đồ sơ lược về phần mềm Remote Desktop -
2.2 Danh sách các Stakeholder
Là các cá nhân sử dụng phần mềm Remote- Desktop để tiến hành các chức năng kết nối với 1 máy ở xa
Là người tiếp xúc trực tiếp hoặc gián tiếp quamạng truyền thông với người sử dụng để có thế giải đáp và tiếp nhận phàn nàn cũng như ý kiến
2.3 Danh sách các Use-case
Là người sử dụng sẽ tạo ra một ID và Password được kết nối với Server
2 Đăng nhập Là người dùng sẽ lấy ID và Password từ một ở máy khác ở xa.
3 Chọn ID Đăng nhập Là người sử dụng có thể chọn một trong số các ID đăng nhập gần đây.
4 Quản Lý ID và tài khoản Bên Admin có quyền truy cập vào và
Trang 14quản lý các ID và tài khoản của người dùng.
5 Đăng xuất Người dùng sẽ thoát khỏi phần mềm Remote - Desktop và ngắt kết nối.
Yêu cầu đặc biệt Sever ID và Password phải được đăng ký và kích hoạt trên
Điều kiện tiên quyết ID và Password không bị khóa
Điều kiện phát sinh Nhấn Enter để đăng nhập
Hoặc click vào nút đăng nhập
Dòng sự kiện chính
1 Hệ thống yêu cầu nhập tên ID và password
2 Người dùng nhập đầy đủ ID và Password
3 Đăng nhập thành công sẽ hiển thị giao diện quản kết nối giữa 2 máy
Dòng sự kiện phụ/rẽ nhánh 3 Đăng nhập thất bại sẽ yêu cầu nhập lại
Dòng sự kiện ngoại lệ Không có
2.4.1 Đặc tả Use-case Đăng nhập
Trang 15Tên User case Đăng ký
Mô tả Người sử dụng sẽ tạo ra một ID và Password đượcđăng ký và kết nối với Server để cho một máy khác
kết nối từ xa
Yêu cầu đặc biệt ID và Password phải phù hợp
Điều kiện tiên quyết ID và Password chưa đăng ký
Điều kiện phát sinh Nhấn Enter để đăng ký
Hoặc click vào nút đăng ký
Dòng sự kiện chính
1 Hệ thống yêu cầu nhập tên ID và password
2 Người dùng nhập đầy đủ ID và Password
3 Đăng ký thành công sẽ hiển thị thông báo đăng ký thành công
Dòng sự kiện phụ/rẽ nhánh 3 Đăng ký thất bại sẽ yêu cầu nhập lại
Dòng sự kiện ngoại lệ Không có
2.4.2 Đặc tả Use-case Đăng ký
2.4.3 Đặc tả Use-case Đăng xuất
Mô tả Desktop.Người sử dụng sẽ thoát khỏi phẩn mềm Remote -
Trang 16Yêu cầu đặc biệt Đang hoạt động.
Điều kiện tiên quyết Đã đăng nhập
Dòng sự kiện chính
1 Hệ thống sẽ hiển thị một nút để đăng xuất
2 Người dùng chọn và ấn nút để đăng xuất
3 Đăng xuất thành công
Dòng sự kiện phụ/rẽ nhánh 3 Đăng xuất thất bại và kiểm tra lại kết nối
Dòng sự kiện ngoại lệ Không có
2.4.4 Đặc tả Use-case Quản lý ID và Tài khoản
Mô tả sách ID và tài khoảnAdmin sẽ đăng nhập vào hệ thống để quản lý danh
Điều kiện tiên quyết Đã đăng nhập vào hệ thống
Điều kiện phát sinh Không có danh sách quản lý
Dòng sự kiện chính 1 Hệ thống sẽ hiển thị một danh sách
2 Admin sẽ click vào để xem thông tin danh sách và có thể xóa, chỉnh sửa
Trang 173 Quản lý thành công.
Dòng sự kiện phụ/rẽ nhánh cập cao hơn Admin.3 Quản lý thất bại và yêu cầu cung cấp quyền truy
Dòng sự kiện ngoại lệ Không có
2.5 Sơ đồ hoạt dộng
2.5.1 Sơ đồ hoạt động của Use-case Đăng nhập
Hình 2.2 Sơ đồ hoạt động của Use-case Đăng nhập
2.5.2 Sơ đồ hoạt động của Use-case Đăng ký
Trang 18Hình 2.3 Sơ đồ hoạt động của Use-case Đăng ký
2.5.3 Sơ đồ hoạt động của Use-case Đăng xuất
Hình 2.4 Sơ đồ hoạt động của Use-case Đăng xuất
2.5.4 Sơ đồ hoạt động của Use-case Quản lý ID và Tài khoản
Trang 19Hình 2.5 Sơ đồ hoạt động của Use-case Quản lý ID và Đăng nhập
2.6 Sơ đồ trình tự
2.6.1 Sơ đồ trình tự của Use-case Đăng nhập
Trang 20Hình 2.6 Sơ đồ trình tự của Use-case Đăng nhập
2.6.2 Sơ đồ trình tự của Use-case Đăng ký
Hình 2.7 Sơ đồ trình tự của Use-case Đăng ký
2.6.3 Sơ đồ trình tự của Use-case Đăng xuất
Trang 21Hình 2.8 Sơ đồ trình tự của Use-case Đăng xuất
2.6.4 Sơ đồ trình tự của Use-case Quản lý ID và Tài khoản
Hình 2.9 Sơ đồ trình tự của Use-case Quản lý ID và Tài khoản
Trang 22CHƯƠNG 3 THIẾT KẾ PHẦN MỀM
3.1 Thiết kế kiến trúc
3.1.1 Hệ thống được thiết kế theo mô hình Client - Server
Hình 3.1 Mô hình Client Server -
3.1.2 Danh sách các thành phần trong mô hình Client - Server
Client Máy khách truy cập cơ sở dữ liệu và thực hiện thao tác
3.2 Thiết kế giao diện phần mềm
3.2.1 Sơ đồ hoạt động của phần mềm
Trang 23Hình 3.2 Sơ đồ hoạt động của phần mềm Remote Desktop -
3.2.2 Danh sách các form màn hình
1 Đăng nhập Là Form bắt buộc thực hiện thành công.
2 Đăng nhập thành công Hiện thị thông báo đăng nhập thành công.
4 Đăng xuất Thực hiện quá trính đăng xuất khỏi hệ thống.
3.3 Đặc tả giao diện tương tác và xử lý
3.3.1 Giao diện tương tác
Trang 24Hình 3.3 Giao diện tương tác của Remote Desktop
4 submit_yes Kết nối tới máy tính cần điều khiển
3.3.2 Các sự kiện xử lý
3.3.3 Các Control để xử lý
Trang 25CHƯƠNG 4 KIỂM NGHIỆM PHẦN MỀM4.1 Unit Testing
4.1.1 Test case kịch bản “Đăng nhập sai thông tin ID hoặc Password”
textPassword: “15911” -> Nhập sai thông tin
Expected
Test Steps
1 Nhập thông tin ID và Password
2 Đăng nhập tài khoản
3 Hiển thị màn hình giao diện
4.1.2 Test case kịch bản “Đăng ký thông tin không hợp lệ hoặc đã đăng ký”
Input Data textID: “test123” -> Đã đăng ký
3 Nhập thông tin ID và Password
4 Đăng ký tài khoản
3 Hiển thị màn hình thông báo
Trang 26➢ Hiểu được các chức năng của phần mềm Remote - Desktop.
2 Hạn chế, khó khăn và hướng phát triển
➢ Phần mềm Remote - Desktop vẫn còn thiếu nhiều chức năng, chức năng vẫncòn hạn chế, chỉ thực hiện các tương tác đơn giản qua lại giữa 2 máy tính
➢ Sẽ phát triển các tính năng nâng cao để người dùng có thể tương tác và giaotiếp qua lại giữa hai máy tính một cách dễ dàng và thuận tiện hơn
TÀI LIỆU THAM KHẢO
➢
➢ UltraViewer
➢ Github