Với số lượng lớn các thiết bị và người sử dụng, hệ thống quản lý phòng máy không chỉ giúp tối ưu hóa việc sử dụng tài nguyên mà còn đảm bảo an ninh, bảo trì và nâng cao hiệu suất hoạt độ
Mục đích
Mục đích của đề tài "Xây dựng hệ thống quản lý phòng máy" là:
- Phát triển một hệ thống phần mềm giúp người quản trị có thể giám sát, điều khiển và quản lý từ xa các máy tính trong phòng máy
- Áp dụng kiến thức về lập trình mạng, giao thức TCP/IP và mô hình client-server để xây dựng hệ thống kết nối ổn định và bảo mật.
Phạm vi
Phạm vi của đề tài tập trung vào các nội dung chính sau:
- Xây dựng hệ thống theo kiến trúc client-server với giao thức TCP/IP
- Phát triển ứng dụng sử dụng ngôn ngữ lập trình Java
Triển khai các chức năng giám sát và điều khiển từ xa cho phép theo dõi trạng thái máy trạm, bật hoặc tắt máy, cài đặt phần mềm và gửi thông báo hiệu quả.
- Xử lý kết nối mạng giữa server và client trong mạng nội bộ (LAN)
- Áp dụng cho các phòng máy tính trong trường học, trung tâm đào tạo và doanh nghiệp
- Mô phỏng và kiểm thử hệ thống trên môi trường phòng máy với số lượng máy trạm giới hạn
Hệ thống này chủ yếu tập trung vào việc quản lý và giám sát các chức năng cơ bản, mà chưa tích hợp các tính năng nâng cao như quản lý tài nguyên hệ thống và bảo mật phức tạp.
Phạm vi dự án tập trung vào các tính năng cốt lõi, đảm bảo tính khả thi và tạo nền tảng vững chắc cho việc phát triển các chức năng mở rộng trong tương lai.
Quá trình triển khai
Nội dung công việc Bắt đầu Hoàn thành
1 Lên ý tưởng, chọn đề tài, đưa ra phác thảo công việc
14/08/2024 03/09/2024 Các yêu cầu, định hướng
2 Tạo repository trên GitHub, thêm thành viên, thêm nhánh và các thao tác cần thiết khác
3 Chọn ngôn ngữ phát triển, xác định các lớp (class), đối tượng
4 Phân tích, thiếp lập phạm vi, thông tin và các dữ liệu, mô tả chi tiết về dự án
5 Thiết kế sơ đồ ca sử dụng, sơ đồ hoạt động
6 Tạo cấu trúc dự án theo mô hình
Peer-to-peer, sử dụng giao thức
TCP/IP, sử dụng socket
7 Thiết lập quy chuẩn đặt tên trong lập trình theo camelCase, thống nhất sử dụng dữ liệu theo tiếng
Anh/ Việt, thiết kế các hàm clean code, theo quy chuẩn nhất định
Để xây dựng một hệ thống ứng dụng hiệu quả, cần đưa ra mô tả chi tiết về các chức năng của hệ thống Mô tả này đóng vai trò quan trọng trong việc áp dụng các mô tả để xử lý các hàm chức năng cơ bản cho ứng dụng, đảm bảo rằng hệ thống hoạt động trơn tru và đáp ứng được nhu cầu của người dùng.
Vào ngày 30/09/2024 và 10/11/2024, chúng tôi sẽ bám sát sơ đồ và bảng phác thảo để triển khai ứng dụng theo kế hoạch đã đề ra Quá trình này bao gồm lập trình cho từng thành phần của ứng dụng, kiểm thử lỗi và thực hiện kiểm tra các chức năng Chúng tôi cũng sẽ phân tích tính tương thích của các thành phần để đảm bảo chức năng hoàn chỉnh của ứng dụng.
10 Viết báo cáo, chỉnh sửa và hoàn thiện sản phẩm
11 Trình bày chi tiết sản phẩm 05/01/2025 Bảo vệ đồ án
Bảng 1: Bảng quá trình triển khai
Phân công nhiệm vụ
- Vẽ sơ đồ ca sử dụng (Use case)
- Vẽ sơ đồ hoạt động
- Lập trình chức năng remote desktop, truyền file dung lượng lớn giữa các máy, task manager, chặn tên miền
- Kiểm thử và viết báo cáo
- Thực hiện thiết kế giao diện chính
- Lập trình chức năng chat, xem màn hình, truy cập camera, phân phối sử dụng các luồng chức năng
- Kiểm thử và viết báo cáo
Bảng 2: Bảng phân công nhiệm vụ
Quản lý dự án
- Github: https://github.com/wbin04/iLab
CƠ SỞ LÝ THUYẾT
Mô hình Client – Server
Mô hình mạng Client-Server bao gồm hai thành phần chính: máy khách (Client) và máy chủ (Server) Server đóng vai trò lưu trữ tài nguyên và cài đặt các chương trình dịch vụ theo yêu cầu của Client Ngược lại, Client, bao gồm máy tính và các thiết bị điện tử khác, gửi yêu cầu đến Server để truy cập và sử dụng tài nguyên.
Client là khách hàng sử dụng dịch vụ, có thể là tổ chức hoặc cá nhân Trong lĩnh vực kỹ thuật số, khái niệm này tương tự; trong mô hình Client-Server, Client là một máy tính (Host) nhận thông tin từ nhà cung cấp và sử dụng dịch vụ cụ thể (Server).
Server là máy chủ hoặc phương tiện cung cấp dịch vụ, thường được hiểu là một máy tính từ xa trong lĩnh vực công nghệ Chức năng chính của server là cung cấp thông tin và quyền truy cập cho các dịch vụ cụ thể Mô hình Client – Server mang lại nhiều ưu điểm, bao gồm khả năng quản lý dữ liệu hiệu quả và cải thiện trải nghiệm người dùng.
Khả năng kiểm soát tập trung (Centralization) được tích hợp sẵn, cho phép tất cả thông tin cần thiết được tập trung tại một vị trí duy nhất.
Trong mạng Client - Server, bảo mật dữ liệu được tối ưu hóa nhờ vào kiến trúc tập trung, cho phép người dùng kiểm soát quyền truy cập Chỉ những người được cấp quyền mới có thể thực hiện các thao tác cần thiết, đảm bảo an toàn thông tin hiệu quả.
Mô hình mạng Client-Server nổi bật với khả năng mở rộng linh hoạt, cho phép người dùng dễ dàng tăng cường tài nguyên như số lượng Client hoặc Server khi cần thiết Điều này giúp mở rộng kích thước Server một cách hiệu quả mà không gây gián đoạn đáng kể cho hoạt động của hệ thống.
Khả năng truy cập hệ thống mạng máy tính hoàn toàn không phân biệt vị trí hay nền tảng, cho phép tất cả các nhân viên dễ dàng đăng nhập và truy cập thông tin công ty mà không cần sử dụng terminal mode hay bộ xử lý khác.
Nhược điểm của mô hình Client – Server:
Tắc nghẽn lưu lượng xảy ra khi nhiều Client gửi yêu cầu từ một Server, dẫn đến kết nối chậm và có thể gây ra hiện tượng crash trong trường hợp xấu nhất, ảnh hưởng tiêu cực đến quá trình truy cập thông tin.
Độ bền của mạng Client Server là một yếu tố quan trọng, bởi vì đây là mạng tập trung Khi Server chính gặp sự cố hoặc bị nhiễu, toàn bộ hệ thống mạng sẽ bị gián đoạn, ảnh hưởng đến hoạt động của người dùng.
Bảo trì hệ thống là yếu tố quan trọng để đảm bảo máy chủ hoạt động liên tục và hiệu quả Việc chăm sóc và bảo trì đúng cách sẽ giúp duy trì hiệu suất của server, từ đó nâng cao độ tin cậy và ổn định trong quá trình triển khai công việc.
Tài nguyên trên Server không phải lúc nào cũng có thể sử dụng được, ví dụ như việc không thể in tài liệu trực tiếp từ web hoặc chỉnh sửa thông tin trên ổ cứng của Client Ứng dụng “Điều khiển máy tính từ xa Remote Desktop” hoạt động theo mô hình Client – Server, bao gồm một Server và nhiều Clients.
Giao thức TCP/IP
TCP/IP, hay Giao thức điều khiển truyền nhận liên mạng, là bộ giao thức quan trọng giúp truyền tải và kết nối thông tin giữa các thiết bị trong mạng internet.
TCP/IP gồm có 2 giao thức chính, đó là:
TCP có vai trò quan trọng trong việc xác định các ứng dụng và thiết lập các kênh giao tiếp Giao thức này quản lý thông tin được chia nhỏ để truyền tải qua internet, đồng thời tập hợp các dữ liệu theo đúng thứ tự, đảm bảo rằng thông tin được truyền tải chính xác đến địa chỉ đích.
IP đảm bảo rằng thông tin được gửi đến đúng địa chỉ, với việc gán địa chỉ và định tuyến cho từng cuộc gọi thông tin Mỗi mạng sẽ có một địa chỉ IP riêng để xác định chính xác nơi chuyển và nhận dữ liệu Giao thức TCP/IP mang lại nhiều ưu điểm, bao gồm khả năng kết nối linh hoạt và độ tin cậy cao trong việc truyền tải thông tin.
- Có khả năng tạo lập kết nối giữa các máy tính khác nhau
- TCP/IP hoạt động độc lập với hệ điều hành Do đó ít bị ảnh hưởng khi lỗi win
- TCP/IP hỗ trợ tương tác với nhiều giao thức trực tuyến khác nhau
- Giao thức có thể hoạt động hoàn toàn độc lập
- Hỗ trợ nhiều giao thức khác nhau
- Không ảnh hưởng tới internet hay gây áp lực trên máy tính nhờ có dung lượng nhẹ
Nhược điểm giao thức TCP/IP:
- Khó quản lý, cài đặt khá cầu kỳ, phức tạp
- Tầng giao vận đôi khi không đảm bảo được việc phân phối các gói tin, dữ liệu
- TCP/IP gồm các giao thức cố định, rất khó để thay thế
TCP/IP không phân biệt rõ ràng giữa khái niệm và giao diện, điều này khiến cho giao thức này chưa thực sự hiệu quả đối với các trang web mới trong mạng hiện nay.
- TCP/IP dễ bị tấn công và từ chối dịch vụ
“Hệ thống quản lý phòng máy” sử dụng bộ giao thức TCP/IP với sự hỗ trợ của Socket trong ngôn ngữ Java.
Socket và Java Socket
Socket là điểm cuối của liên kết truyền thông hai chiều giữa hai chương trình trên mạng, đóng vai trò quan trọng trong việc kết nối giữa client và server thông qua các lớp Socket.
Trong Java, TCP Socket là công cụ giao tiếp giữa hai máy tính qua giao thức TCP Một chương trình Client sẽ tạo một socket để thiết lập kết nối với Server, từ đó bắt đầu quá trình giao tiếp.
Khi kết nối được thiết lập, Server sẽ tạo ra một đối tượng Socket để quản lý giao tiếp Lúc này, Client và Server có thể trao đổi dữ liệu thông qua việc đọc và ghi từ TCP Socket.
Kết nối TCP Socket trong Java được hỗ trợ bởi gói Socket và ServerSockets thuộc java.net
Hình 1: Mô tả quá trình kết nối giữa client và server
Mô tả quá trình khởi tạo, kết nối và trao đổi thông tin giữa Client và Server trong mô hình trên bằng Java TCP Socket:
1 Khởi tạo một máy chủ (server) thông qua hàm socket()
2 Liên kết máy chủ với host và port thông qua hàm bind()
3 Cho phép máy chủ (server) lắng nghe trên port đó thông qua hàm listen()
4 Tạo yêu cầu kết nối từ máy khách (client) tới máy chủ thông qua hàm connect()
5 Từ phía máy chủ (server) sẽ chấp nhận yêu cầu kết nối của máy khách (client) thông qua hàm accept()
6 Sau khi máy khách đã kết nối được tới máy chủ, khi đó có thể thực hiện trao đổi thông tin giữa client – server thông qua hàm read()/write()
7 Việc trao đổi tin hoàn thành có thể đóng kết nối giữa client – server thông qua hàm close()
Thư viện OpenCV
OpenCV (Open Source Computer Vision Library) là thư viện mã nguồn mở nổi bật trong lĩnh vực xử lý ảnh và thị giác máy tính, cung cấp công cụ và thuật toán mạnh mẽ cho việc phân tích hình ảnh và video Thư viện hỗ trợ nhiều tác vụ như phát hiện đối tượng, nhận diện khuôn mặt và theo dõi chuyển động, đồng thời cung cấp tính năng xử lý dữ liệu video hiệu quả, bao gồm theo dõi đối tượng và phân tích chuyển động trong chuỗi hình ảnh Với các hàm và class tiện ích, OpenCV giúp đơn giản hóa quá trình tương tác và xử lý video từ nhiều nguồn khác nhau.
Trong ứng dụng này, chúng ta sử dụng class VideoCapture của OpenCV để truy xuất và xử lý dữ liệu hình ảnh thu được từ webcam.
Firewall
Firewall là hệ thống bảo mật mạng, có thể là phần cứng hoặc phần mềm, giúp kiểm soát lưu lượng giữa các mạng tin cậy và không tin cậy Chức năng chính của firewall là ngăn chặn truy cập trái phép và bảo vệ hệ thống khỏi các mối đe dọa bên ngoài Nó hoạt động dựa trên các quy tắc đã được định nghĩa trước, cho phép hoặc từ chối lưu lượng dựa trên địa chỉ IP, cổng và giao thức.
- Firewall phần cứng: Thường được sử dụng trong các doanh nghiệp lớn, có khả năng xử lý lưu lượng lớn và bảo vệ toàn bộ mạng
- Firewall phần mềm: Thường được cài đặt trên máy tính cá nhân hoặc máy chủ, giúp bảo vệ từng thiết bị riêng lẻ
- Firewall thế hệ tiếp theo (NGFW): Kết hợp các tính năng của firewall truyền thống với khả năng phát hiện và ngăn chặn xâm nhập (IDS/IPS)
PowerShell cung cấp nhiều cmdlet hữu ích để quản lý firewall và quy tắc bảo mật mạng Dưới đây là một số lệnh cơ bản mà bạn có thể sử dụng để thực hiện các tác vụ này.
- Get-NetFirewallRule: Lấy danh sách các quy tắc firewall hiện có
- New-NetFirewallRule: Tạo một quy tắc firewall mới
- Remove-NetFirewallRule: Xóa một quy tắc firewall.
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
Phân tích hệ thống
2.1.1.1.Mục tiêu của hệ thống
Hệ thống hướng đến việc phát triển một ứng dụng giúp người dùng dễ dàng truy cập và điều khiển máy tính từ xa, đồng thời cho phép truyền file và giao tiếp an toàn, hiệu quả.
- Chức năng truy cập từ xa: Cho phép người dùng truy cập và điều khiển máy tính từ xa thông qua mạng nội bộ
- Chức năng truyền tệp: Cho phép người dùng truyền tệp giữa các máy khách
- Chức năng giao tiếp: Cho phép người dùng chat với máy chủ
- Chức năng bật webcam: Cho phép máy chủ thấy được hình ảnh người dùng ngồi trước máy
- Các chức năng tiện ích: Cho phép máy chủ thực hiện các chức năng chụp màn hình, tắt máy,xoá ứng dụng trên máy người dùng
Ngoài ra, hệ thống còn có các mục tiêu phụ đi kèm như:
- Hệ thống cần phải đảm bảo truyền dữ liệu mượt mà, ít trễ hơn và giảm thiểu tối đa sự gián đoạn trong quá trình truy cập từ xa
- Hệ thống cần phải quản lý phiên làm việc của người dùng một cách hiệu quả
Hệ thống cần hỗ trợ nhiều người dùng truy cập đồng thời, yêu cầu khả năng phân biệt các phiên làm việc của từng người dùng khác nhau.
2.1.1.2.Chức năng của hệ thống
Dựa trên những mục tiêu đặt ra, hệ thống được xây dựng sẽ có một số chức năng chính như sau:
Hệ thống cho phép người dùng kết nối và điều khiển máy tính từ xa qua mạng nội bộ, giúp họ xem màn hình, sử dụng chuột và bàn phím Người dùng có thể thực hiện các thao tác như chỉnh sửa tệp và khởi động lại máy tính một cách dễ dàng.
- Hệ thống cho phép người dùng truyền tệp giữa máy khách Điều này rất hữu ích khi người dùng muốn chia sẻ dữ liệu
Hệ thống cung cấp kênh giao tiếp hiệu quả giữa các máy khách, cho phép người dùng trao đổi thông tin, hỗ trợ giải quyết sự cố và giao tiếp dễ dàng trong quá trình làm việc từ xa.
2.1.2 Phân tích mô hình hệ thống
Hệ thống được xây dựng dựa trên mô hình Client-Server
Hình 2: Mô tả mô hình của hệ thống
Mô hình Client-Server là kiến trúc chính trong "Hệ thống quản lý phòng máy", giúp đảm bảo tính tổ chức, hiệu quả và khả năng mở rộng dễ dàng Trong kiến trúc này, server giữ vai trò trung tâm điều phối, trong khi các client là các máy trạm trong phòng máy thực hiện nhiệm vụ theo yêu cầu từ server.
Trong mô hình Client-Server, máy chủ đóng vai trò xác thực và cho phép các client có quyền truy cập đến tài nguyên của client khác hay không.
Thiết kế hệ thống
2.2.1 Biểu đồ ca sử dụng
Hình 3: Biểu đồ Use-case Tổng quát
Tên Use case Remote Desktop
Tác nhân Server, Máy client
Mô tả Thực hiện điều khiển máy tính của client
Sự kiện kích hoạt Click nút “View” tương ứng với các hành động điều khiển hiển thị và điều khiển màn hình của phía client
Tiền sự kiện Các client đã kết nối tới server thành công
1 Yêu cầu thực hiện điều khiển máy tính của client
2 Liên tục gửi ảnh màn hình cho phía server
3 Thực hiện di chuột, gõ phím trên cửa sổ Remote Desktop
4 Lắng nghe sự kiện di chuột, gõ phím và thực hiện lại trên máy
Luồng sự kiện thay thế
2a Thông báo máy chưa kết nối đến server
Hậu sự kiện Hiển thị cửa sổ Remote Desktop có hình ảnh màn hình máy client trên đó
Bảng 3: Bảng đặc tả Use-case Remote Desktop
Tên Use case Truyền File
Tác nhân Server, Máy client
Mô tả Thực hiện truyền file đến máy tính client
Sự kiện kích hoạt Click nút “File” tương ứng với các hành động truyền file đến máy client
Tiền sự kiện Các client đã kết nối tới server thành công
1 Yêu cầu thực hiện truyền file đến máy client
2 Chọn file muốn truyền đến máy client
3 Nhận về từng mảng byte của file server gửi sang
4 Khởi tạo thư mục nếu chưa có và lưu file vào thư mục đó
Luồng sự kiện thay thế
2a Thông báo máy chưa kết nối đến server
Hậu sự kiện Máy client nhận file thành công
Bảng 4: Bảng đặc tả Use-case Truyền file
Mô tả Thực hiện chat giữa server và client
Sự kiện kích hoạt Click nút “Chat” tương ứng với các hành động chat với client
Tiền sự kiện Các client đã kết nối tới server thành công
1 Yêu cầu thực hiện chat đến 1 client nào đó
2 Thực hiện gửi tin nhắn đến client
3 Hiển thị tin nhắn từ server
4 Thực hiện gửi tin nhắn đến server
Luồng sự kiện thay thế
2a Thông báo máy chưa kết nối đến server
Hậu sự kiện Hiển thị cửa sổ chat và server với client có thể chat với nhau
Bảng 5: Bảng đặc tả Use-case Chat
Tên Use case Chặn tên miền
Tác nhân Server, Máy client
Mô tả Thực hiện chặn tên miền trên máy client
Sự kiện kích hoạt Click nút “Chặn Domain” tương ứng với hành động chặn truy cập 1 web cụ thể ở phía client
Tiền sự kiện Các client đã kết nối tới server thành công
1 Yêu cầu thực hiện chặn domain ở máy client
2 Nhận được tên domain bị chặn
3 Thực hiện chặn thông qua powershell chạy dưới quyền admin
4 Hiển thị danh sách domain bị chặn của máy đó
Luồng sự kiện thay thế
2a Thông báo máy chưa kết nối đến server
1 Yêu cầu thực hiện xoá domain bị chặn ở máy client
2 Nhận được tên domain bỏ chặn
3 Thực hiện bỏ chặn thông qua powershell chạy dưới quyền admin
4 Hiển thị danh sách domain bị chặn mới của máy đó
Luồng sự kiện thay thế
2a Thông báo máy chưa kết nối đến server
Hậu sự kiện Hiển thị cửa sổ những domain bị chặn, và máy client không thể truy cập tới domain đó
Bảng 6: Bảng đặc tả Use-case Chặn tên miền
Tên Use case Bật webcam
Tác nhân Server, Máy client
Mô tả Thực hiện bật webcam máy tính của client
Sự kiện kích hoạt Click nút “Bật webcam” tương ứng với các hành động bật webcam của máy client
Tiền sự kiện Các client đã kết nối tới server thành công
1 Yêu cầu thực hiện bật webcam máy của client
2 Liên tục gửi hình ảnh webcam sang phía client
3 Hiển thị hình ảnh webcam của máy client
Luồng sự kiện thay thế
2a Thông báo máy chưa kết nối đến server
Hậu sự kiện Hiển thị các khung hình webcam của máy client
Bảng 7: Bảng đặc tả Use-case Bật camera
Tên Use case Chức năng tiện ích
Tác nhân Server, Máy client
Mô tả Thực hiện các chức năng như chụp màn hình, tắt, quản lý ứng dụng máy tính của client
Click nút “chụp màn hình”, “shutdown”, “task manager” tương ứng với các hành động chụp màn hình, tắt, quản lý ứng dụng của máy client
Tiền sự kiện Các client đã kết nối tới server thành công
1 Yêu cầu thực hiện chụp màn hình máy client
2 Gửi ảnh chụp màn hình dưới dạng mảng byte sang server
3 Nhận được ảnh chụp màn hình dưới dạng mảng byte
4 Khởi tạo thư mục nếu chưa tồn tại và lưu ảnh vào
Luồng sự kiện thay thế
2a Thông báo máy chưa kết nối đến server
1 Yêu cầu tắt máy client
2 Lắng nghe yêu cầu và thực hiện tắt máy thông qua câu lệnh cmd
Luồng sự kiện thay thế
2a Thông báo máy chưa kết nối đến server
1 Yêu cầu quản lí ứng dụng máy client
2 Lấy được danh sách ứng dụng đang chạy thông qua câu lệnh trong cmd
3 Gửi danh sách ứng dụng đang chạy qua phía server
4 Hiển thị giao diện danh sách ứng dụng đang chạy của máy client, có thể thực hiện xoá ứng dụng
Luồng sự kiện thay thế
2a Thông báo máy chưa kết nối đến server
Hậu sự kiện Nhận được ảnh màn hình máy client, máy client đã được tắt, quản lí ứng dụng của máy client
Bảng 8: Bảng đặc tả Use-case Các chức năng tiện ích
2.2.2.1.Biểu đồ hoạt động chức năng Kết nối máy
Hình 4: Biểu đồ hoạt động chức năng Kết nối máy
2.2.2.2.Biểu đồ hoạt động chức năng Remote Desktop
Hình 5: Biểu đồ hoạt động chức năng Remote Desktop
2.2.2.3.Biểu đồ hoạt động chức năng Chat
Hình 6: Biểu đồ hoạt động chức năng Chat
2.2.2.4.Biểu đồ hoạt động chức năng Truyền file
Hình 7: Biểu đồ hoạt động chức năng Truyền file
2.2.2.5.Biểu đồ hoạt động chức năng Chặn tên miền
Hình 8: Biểu đồ hoạt động chức năng Chặn tên miền
2.2.2.6.Biểu đồ hoạt động các chức năng Tiện ích
Hình 9: Biều đồ hoạt động các chức năng Tiện ích
2.2.2.7.Biểu đồ hoạt động chức năng Bật camera
Hình 10: Biểu đồ hoạt động chức năng Bật camera
Xây dựng ứng dụng
2.3.1 Công cụ xây dựng Để phát triển hệ thống quản lý phòng máy, các công cụ và công nghệ chính được sử dụng bao gồm:
Java là ngôn ngữ chủ yếu được sử dụng trong phát triển backend, đảm nhiệm các nhiệm vụ như xử lý logic, kết nối với cơ sở dữ liệu và cung cấp các dịch vụ liên quan đến ứng dụng.
- JavaFX : Xây dựng cấu trúc hệ thống
- CSS : Sử dụng để thiết kế giao diện một cách sinh động, bắt mắt
- Sử dụng trong việc quản lý kết nối giữa client và server, giúp việc trao đổi thông tin giữa 2 phía diễn ra liên tục
- Eclipse : Công cụ chính để viết mã và gỡ lỗi
- Git : Quản lý và chia sẻ mã nguồn
- Thư viện OpenCV : Sử dụng cho quá trình truyền nhận hình ảnh từ webcam máy tính
- Powershell, Terminal : Sử dụng cho quá trình thực hiện tương tác với hệ điều hành
2.3.2 Triển khai chi tiết các kỹ thuật có trong hệ thống
2.3.2.1.Xử lý việc lấy danh sách ứng dụng đang chạy ở máy client thông qua powershell
Hình 11: Hàm xử lý sự kiện Gửi danh sách ứng dụng
- Câu lệnh: “powershell.exe gps | where {$_.mainwindowhandle -ne 0} | select
ProcessName, Id” nhằm thực hiện lấy danh sách các ứng dụng đang chạy, cụ thể:
- gps : viết tắt của ‘Get-Process’ nhằm thực hiện lấy thông tin các tiến trình đang chạy trong hệ thống
- where {$_.mainwindowhandle -ne 0} : nhằm lọc ra các tiến trình có 1 cửa sổ chính (hay có giao diện) đang hiển thị
- select ProcessName, Id : nhằm lấy ra tên tiến trình và Id của tiến trình
Hình 12: Hàm xử lý sự kiện Đóng ứng dụng
Gửi danh sách ứng dụng từ máy client đến server để hiển thị trên giao diện quản lý, cho phép người dùng tắt ứng dụng thông qua lệnh.
“ taskkill /F /PID appId ” trong Cmd
2.3.2.2.Xử lý các sự kiện của chuột, phím khi đang sử dụng remote desktop
Hình 13: Hàm xử lý sự kiện Điều khiển chuột
Khách hàng nhận diện các sự kiện chuột từ máy chủ, bao gồm nhấn, thả, di chuyển, kéo và cuộn chuột Mỗi sự kiện được ghi lại với tọa độ (x, y) cùng với thông tin về nút chuột được sử dụng, như chuột trái, giữa và phải.
Các phương thức trong lớp Robot, bao gồm mouseMove(), mousePress(), mouseRelease() và mouseWheel(), được sử dụng để thực hiện các thao tác chuột trên máy client, giúp client nhận các sự kiện từ server một cách chính xác và tự động.
Hình 14: Hàm xử lý sự kiện Điều khiển bàn phím
- Tương tự, ta cũng thực hiện nhận sự kiện phím từ server và dùng lớp robot để xử lý
For the "KEY_TYPED" event, the code reads a string of text and utilizes the setClipboardContents(text) method to copy that text to the clipboard Subsequently, it invokes pasteFromClipboard(robot) to paste the content from the clipboard at the current cursor position.
Việc sao chép và dán ký tự Unicode, như tiếng Việt, là rất cần thiết để đảm bảo tính chính xác khi nhập liệu, vì mã keycode có thể không được nhận diện đúng cách.
2.3.2.3.Xử lý sự kiện Remote Desktop và Stream
Hình 15: Hàm xử lý sự kiện chức năng Remote Desktop và Stream
Chúng ta sử dụng thư viện Robot trong Java để chụp màn hình máy client và truyền ảnh dưới dạng byte đến server Quá trình này diễn ra liên tục với tần suất 10ms, giúp cập nhật hình ảnh trên giao diện remote desktop của server một cách mượt mà và liên tục.
Đầu tiên, một đối tượng Robot được khởi tạo để chụp toàn bộ màn hình của máy client Hình ảnh sau đó được chuyển đổi thành mảng byte với định dạng JPEG thông qua ByteArrayOutputStream Trước khi gửi dữ liệu hình ảnh, kích thước của mảng byte sẽ được gửi trước, giúp server nhận biết kích thước dữ liệu mà nó sắp nhận.
Quá trình cập nhật hình ảnh màn hình từ máy client đến giao diện remote desktop trên server diễn ra liên tục, với tần suất khoảng 10ms cho mỗi lần chụp và gửi hình ảnh mới Nhờ vào cơ chế này, người dùng có thể trải nghiệm sự tương tác trực tiếp, giúp nâng cao hiệu quả làm việc và sự thuận tiện trong việc sử dụng.
2.3.2.4.Xử lí sự kiện chặn tên miền
Hình 16: Hàm xử lý sự kiện chức năng Chặn tên miền
- Câu lệnh ‘New-NetFirewallRule -DisplayName “Block IP name” -Direction
Outbound -Action Block -RemoteAddress ip’ cụ thể:
- New-NetFirewallRule : Tạo ra 1 quy luật tường lửa mới
- DisplayName : Tên của quy luật này, ta bổ sung thêm phần name để xác định được tên domain bị block, tiện cho việc huỷ quy luật này sau này
- Direction : Chọn Outbound vì ta cần chặn lưu lượng ip từ máy client tới domain này
- Action : Hành dộng ở đây được xác định là Block(chặn)
- RemoteAddress : Địa chỉ IP của tên miền
- Câu lệnh powershell này được chạy dưới quyền administrator nên ta cần bổ sung thêm “-Verb RunAs”
2.3.2.5.Xử lí sự kiện webcam
Hình 17: Hàm xử lý sự kiện chức năng Bật camera và gửi hình ảnh ở Client
- VideoCapture : Là một đối tượng của OpenCV để truy cập camera
- Capture.open(0) : Mở camera mặc định trên máy
- Mat : Là đối tượng lưu trữ một khung hình của OpenCV
- MatOfByte : Là đối tượng lưu trữ dữ liệu ảnh của OpenCV
- Capture.read(frame) : Lấy một khung hình từ camera và lưu vào frame
- Imgcodecs.imencode(".jpg", frame, matOfByte) : Chuyển khung hình frame thành định dạng JPG và lưu vào matOfByte
- matOfByte.toArray() : Chuyển đổi dữ liệu ảnh từ MatOfByte thành mảng byte
- capture.release() : Giải phóng (tắt) camera
Hình 18: Hàm xử lý sự kiện nhận hình ảnh từ Client
- matOfByte : Chuyển đổi mảng byte thành dữ liệu ảnh
- Imgcodecs.imdecode(matOfByte, Imgcodecs.IMREAD_COLOR) : Giải mã dữ liệu ảnh thành đối tượng Mat (ma trận ảnh)
- convertMatToImage(frame) : Hàm hỗ trợ để chuyển đổi ảnh từ Mat sang
- Imgcodecs.imencode(".jpg", frame, matOfByte) : Chuyển khung hình frame thành định dạng JPG và lưu vào matOfByte
- ImageIO.read(byteArrayInputStream) : Đọc dữ liệu từ luồng để tạo một đối tượng
2.3.2.6.Xử lí sự kiện truyền file
Hình 19: Hàm xử lý sự kiện chức năng Truyền file
Đoạn mã sử dụng mảng byte 8192 bytes (8 KB) để đọc dữ liệu từ DataInputStream, giúp chia nhỏ file thành các phần nhỏ hơn Kỹ thuật này hỗ trợ xử lý các file lớn mà không gặp vấn đề về bộ nhớ.
Trong quá trình đọc dữ liệu, nếu tổng số byte đã đọc chưa đủ kích thước của file, vòng lặp sẽ tiếp tục lấy dữ liệu từ stream vào buffer và ghi vào file Điều này đảm bảo rằng toàn bộ dữ liệu được truyền tải cho đến khi file hoàn tất.
THIẾT KẾ GIAO DIỆN
Giao diện chính của Server
Hình 20: Giao diện chính của Server
STT Tên thành phần Loại thành phần Mô tả
1 Thông tin tên lớp Cặp Label và TextField tương ứng
Hiển thị tên lớp và mã lớp để Client có thể kết nối đến
2 Thông tin cổng kết nối
Cặp Label và TextField tương ứng
Server được khởi tạo ở cổng đã nhập
3 Thông tin tổng số máy
Cặp Label và TextField tương ứng
Khởi tạo số lượng máy có thể kết nối
4 Thông tin máy đã kết nối và máy trống
Cặp Label và TextField tương ứng
Hiển thị tổng quan số máy đã kết nối và số máy còn trống
5 Khung chat TextFlow Hiển thị thông báo Client đã kết nối và các thông tin Server gửi đến Client
6 Nhóm các chức năng quản lý tổng quát
ComboBox Thực hiện các chức năng (xem màn hình, mở camera, truyền file) đến tất cả Client đã kết nối
7 Gửi tin nhắn Cặp TextField và Thực hiện gửi tin nhắn đến tất cả
Button (Gửi) Client đã kết nối
8 Khung tổng quan về Client
Pane Hiển thị số máy, trạng thái, thời gian đã sử dụng và tên Client đã kết nối
Bảng 9: Bảng mô tả Giao diện chính của Server
Giao diện chính của Client
Hình 21: Giao diện chính của Client
STT Tên thành phần Loại thành phần Mô tả
1 Mã lớp Cặp TextField và
Tìm kiếm từ mã lớp để kết nối vào Server
2 Thông tin tên lớp Cặp Label và TextField tương ứng
Hiển thị tên lớp khi tìm kiếm mã lớp thành công
Cặp Label và TextField tương ứng
Nhập họ tên của Client
4 Danh sách các máy trống
ComboBox Hiển thị các máy còn trống khi tìm kiếm mã lớp thành công và thực hiện chọn máy
5 Vào phòng Button (Vào phòng) Thực hiện kết nối vào phòng khi đã nhập họ tên và chọn máy
Bảng 10: Bảng mô tả Giao diện chính của Client
Giao diện chức năng Remote Desktop
Hình 22: Giao diện chức năng Remote Desktop
STT Tên thành phần Loại thành phần Mô tả
1 Các chức năng tiện ích
MenuBar Chọn để thực hiện các chức năng tiện ích: truyền file, chụp màn hình, quản lý ứng dụng, chặn tên miền, tắt máy
2 Khung màn hình Canvas Hiển thị màn hình và điều khiển máy tính của Client
Bảng 11: Bảng mô tả Giao diện chức năng Remote Desktop
Giao diện chức năng Chat
Hình 23: Giao diện chức năng Chat
STT Tên thành phần Loại thành phần Mô tả
1 Khung tin nhắn Text và TextFlow Hiển thị tin nhắn giữa Client và
2 Gửi tin nhắn Cặp TextField và
Thực hiện gửi tin nhắn
Bảng 12: Bảng mô tả Giao diện chức năng Chat
Giao diện chức năng Truyền file
Hình 24: Giao diện chức năng Truyền file
STT Tên thành phần Loại thành phần Mô tả
1 Khung thư mục FileChooser Hiển thị thư mục và thực hiện chọn file cần gửi
Giao diện chức năng Chặn tên miền
Hình 25: Giao diện chức năng Chặn tên miền
STT Tên thành phần Loại thành phần Mô tả
Cặp TextField và Button (Chặn)
Thực hiện chặn tên miền đã nhập
2 Bảng danh sách các tên miền đã chặn
TableView Hiển thị IP và tên miền đã chặn
3 Xoá Button (Xoá) Thực hiện huỷ chặn tên miền được chọn từ bảng danh sách tên miền đã chặn
Bảng 14: Bảng mô tả Giao diện chức năng Chặn tên miền
Giao diện chức năng Task Manager
Hình 26: Giao diện chức năng Task Manager
STT Tên thành phần Loại thành phần Mô tả
1 Bảng danh sách các ứng dụng đang chạy
TableView Hiện thị tên và ID các ứng dụng đang chạy trên máy Client
2 Đóng Button (Đóng) Thực hiện ứng dụng được chọn từ bảng danh sách các ứng dụng đang chạy
Giao diện chức năng Xem camera
Hình 27: Giao diện chức năng Xem camera
STT Tên thành phần Loại thành phần Mô tả
1 Khung camera Canvas Camera trên máy Client sẽ được bật và gửi hình ảnh liên tục đến Server
Bảng 16: Bảng mô tả Giao diện chức năng Xem camera
CÁC YÊU CẦU PHI CHỨC NĂNG
Hiệu năng
- Hệ thống phải xử lý kết nối và truyền dữ liệu giữa server và client một cách nhanh chóng, đảm bảo độ trễ tối thiểu
- Hệ thống phải hỗ trợ ít nhất 30 máy trạm đồng thời mà không ảnh hưởng đến hiệu suất hoạt động.
Tính khả dụng
- Hệ thống cần duy trì trạng thái hoạt động ổn định trong suốt quá trình quản lý và điều khiển các máy trạm
- Hệ thống phải tự động phục hồi kết nối nếu gặp gián đoạn mạng (ví dụ: mất tín hiệu tạm thời).
Khả năng mở rộng
Kiến trúc hệ thống cần có tính linh hoạt cao, cho phép mở rộng số lượng máy trạm trong phòng máy một cách dễ dàng mà không yêu cầu thay đổi nhiều trong cấu trúc mã nguồn.
- Hệ thống phải cho phép bổ sung các tính năng mới mà không làm gián đoạn hoạt động hiện tại.
Bảo mật
- Dữ liệu truyền giữa server và client phải được bảo vệ thông qua mã hóa, đảm bảo tính toàn vẹn và an toàn
- Hệ thống cần tích hợp cơ chế xác thực người dùng để ngăn chặn truy cập trái phép vào server hoặc máy trạm.
Khả năng tương thích
- Hệ thống phải hoạt động tốt trên các hệ điều hành phổ biến như Windows, macOS và Linux
- Hệ thống phải hỗ trợ cả máy tính cấu hình thấp để đảm bảo tính thực tiễn trong môi trường phòng máy học tập.
Khả năng sử dụng
- Giao diện người dùng phải đơn giản, dễ sử dụng, phù hợp cho cả những người không có chuyên môn sâu về công nghệ thông tin
Hệ thống phải cung cấp thông báo và báo cáo trạng thái trực quan, dễ hiểu.
Khả năng bảo trì
- Mã nguồn của hệ thống phải được viết theo các tiêu chuẩn lập trình tốt, dễ đọc, dễ hiểu và dễ bảo trì
- Tài liệu hướng dẫn cài đặt, cấu hình và sử dụng hệ thống phải đầy đủ và rõ ràng.
Độ tin cậy
- Hệ thống phải hoạt động chính xác và đáng tin cậy, đảm bảo không có sai sót trong các chức năng giám sát và điều khiển
- Thời gian downtime của hệ thống phải được tối thiểu hóa, đảm bảo mức độ sẵn sàng cao (> 99,5%).
Thân thiện với môi trường
- Hệ thống phải sử dụng tài nguyên phần cứng và mạng một cách hiệu quả, tránh lãng phí tài nguyên không cần thiết
Các yêu cầu phi chức năng là yếu tố quan trọng để đảm bảo hệ thống quản lý phòng máy đạt chất lượng cao, phục vụ hiệu quả nhu cầu sử dụng thực tế và tạo nền tảng cho sự phát triển bền vững trong tương lai.
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Kết quả đạt được
Mô hình TCP/IP đã được áp dụng hiệu quả trong việc xây dựng kiến trúc Client-Server, đảm bảo truyền tải dữ liệu ổn định và đáng tin cậy giữa Server và các máy trạm.
Hiểu rõ cơ chế hoạt động của mạng máy tính là rất quan trọng, vì nhóm đã củng cố kiến thức về các giao thức mạng, cách thiết lập kết nối và xử lý dữ liệu giữa các thiết bị trong hệ thống mạng nội bộ (LAN).
Lập trình mạng với Java cho phép triển khai và quản lý kết nối mạng hiệu quả, sử dụng các thư viện hỗ trợ giao tiếp socket Điều này giúp tối ưu hóa việc điều khiển máy từ xa, mang lại sự linh hoạt và tiện lợi trong các ứng dụng mạng.
Xây dựng hệ thống quản lý phòng máy đã được thực hiện thông qua việc phát triển phần mềm quản lý cơ bản, cho phép người dùng giám sát và điều khiển các máy trạm từ xa thông qua giao diện quản trị trên Server.
Hệ thống cho phép thực hiện các chức năng điều khiển từ xa, bao gồm việc điều khiển máy trạm, gửi thông báo đến người dùng, truyền tải tệp tin và giám sát trạng thái hoạt động trên các máy Client.
Hạn chế
Hệ thống hiện tại chỉ hoạt động trên mạng nội bộ (LAN) và chưa hỗ trợ kết nối qua mạng diện rộng (WAN) hoặc Internet.
Các tính năng bảo mật hiện tại còn hạn chế, thiếu các cơ chế mã hóa dữ liệu và xác thực người dùng nâng cao, điều này cần được cải thiện để tăng cường bảo vệ thông tin.
Khi số lượng máy trạm gia tăng đáng kể, việc tối ưu hệ thống trở nên cần thiết để đảm bảo hiệu suất và độ ổn định Đặc biệt, cần chú trọng vào việc tối ưu hóa xử lý các luồng thực hiện chức năng để đáp ứng nhu cầu ngày càng cao.
Giao diện quản lý hiện tại còn đơn giản và chưa tối ưu cho trải nghiệm người dùng, do đó cần được cải tiến để trở nên dễ sử dụng và thân thiện hơn.
-Xung đột: Việc kết nối với nhiều người dùng cùng lúc có thể gây ra một số xung đột không mong muốn.
Hướng phát triển
Mở rộng khả năng kết nối qua Internet giúp quản lý từ xa hiệu quả hơn, đặc biệt cho các hệ thống có nhiều phòng máy tại nhiều địa điểm khác nhau.
Để nâng cao bảo mật, cần tích hợp các cơ chế mã hóa dữ liệu, xác thực người dùng và bảo vệ hệ thống khỏi các cuộc tấn công từ bên ngoài.
Phát triển tính năng giám sát nâng cao giúp cải thiện khả năng theo dõi tài nguyên hệ thống như CPU và RAM, đồng thời giám sát hoạt động của người dùng và phát hiện các hành vi bất thường.
-Cải tiến giao diện: Xây dựng giao diện đồ họa trực quan, dễ sử dụng, phù hợp với các nhu cầu thực tế của người quản trị phòng máy
Tích hợp chức năng tự động hóa giúp nâng cao hiệu suất làm việc bằng cách thêm các tính năng tự động cài đặt phần mềm, cập nhật hệ thống và thực hiện các tác vụ bảo trì định kỳ.
Những hướng phát triển này sẽ nâng cao sức mạnh của hệ thống, giúp nó đáp ứng hiệu quả hơn các yêu cầu thực tế và đảm bảo khả năng mở rộng trong tương lai.