Chương trình Remote Desktop: + Điều khiển trực tiếp qua màn hình, tiếp quản phím và chuột + Thực hiện được các các thao tác: tắt máy, khởi động lại máy, ngủ đông, khóamáy, chạy một số ứn
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ
TRUYỀN THÔNG VIỆT – HÀN
ĐẠI HỌC ĐÀ NẴNG
ĐỒ ÁN CƠ SỞ 4 XÂY DỰNG ỨNG DỤNG REMOTE DESKTOP
Sinh viên thực hiện : TRẦN VĂN HUY
Giảng viên hướng dẫn : TS NGUYỄN SĨ THÌN
Trang 2Đà nẵng, tháng 12 năm 2020
Trang 3TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ
TRUYỀN THÔNG VIỆT – HÀN
ĐẠI HỌC ĐÀ NẴNG
ĐỒ ÁN CƠ SỞ 4 XÂY DỰNG ỨNG DỤNG REMOTE DESKTOP
Trang 4Đà Nẵng, tháng 12 năm 2020
MỞ ĐẦU
Sự phát triển như vũ bão của ngành công nghệ thông tin kéo theo đó làcác dịch vụ mạng ngày càng phát triển, mở rộng và hoàn thiện hơn, tuy vẫntồn tại nhiều khuyết điểm song không ít tiện lợi từ công nghệ đem lại cho xãhội loài người sự nhanh chóng và chính xác
Ngôn ngữ lập trình là một phần không thể thiếu trong việc xây dựngnên một thế giới công nghệ linh hoạt và mạnh mẽ
Dựa trên kiến thức lập trình mạng với Java, từ ý tưởng xây dựng mộtchương trình có khả năng tương tác với máy tính từ xa thông qua hệ thốngmạng, chương trình Remote desktop được xây dựng, dựa theo mô hình Client-Server hỗ trợ các tính năng cơ bản tương tác với máy tính từ xa như tắt máy,khởi động lại máy, ngủ đông, khóa máy, chạy một số ứng dụng, gửi thôngđiệp, gửi một file hay lấy 1 file từ máy đang điều khiển… sử dụng ngôn ngữlập trình Java
Trang 5
LỜI CẢM ƠN
Lời đầu tiên em xin được bày tỏ lòng biết ơn chân thành tới thầy giáo Nguyễn
Sĩ Thìn ,giảng viên trường ĐH Công Nghệ Thông Tin & Truyền Thông Việt Hàn, thầy
đã trực tiếp hướng dẫn và chỉ bảo tận tình trong suốt quá trình em thực hiện đồ án thờigian qua
Em xin chân thành cảm ơn các thầy giáo, cô giáo trong trường trường ĐHCông Nghệ Thông Tin & Truyền Thông Việt Hàn và đặc biệt là các thầy cô trong khoaKhoa học máy tính, đã giúp e có thêm những kiến thức để hoàn thành đồ án này
Một lần nữa em xin chân thành cảm ơn!
Đà Nẵng, ngày 25 tháng 12 năm 2020
Sinh viên thực hiệnTrần Văn Huy
Trang 6NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Trang 7
MỤC LỤC Trang Chương 1 Tổng quan về đề tài 1
1.1 Mục đích chọn đề tài 1
1.2 Giới thiệu đề tài 1
1.3 Phương pháp triển khai 1
Chương 2 Giới thiệu về ngôn ngữ lập trình Java 2
2.1 Giới thiệu về ngôn ngữ Java 2
2.2 Những đặc điểm cơ bản của Java 2
2.3 Các platform cơ bản của Java 3
2.4 Tiêu chuẩn của một môi trường Java điển hình 4
Chương 3 Giới thiệu lập trình Socket trong Java 5
3.1 Tổng quan về Socket 5
3.2 Lập trình TCP Socket với Java 7
3.3 Các phương thức lớp ServerSocket trong Java 9
3.4 Các phương thức lớp Socket trong Java 11
Chương 4 Remote Desktop: 13
4.1 Cơ chế hoạt động của Remote Desktop: 13
4.2 Sơ đồ hoạt động 14
4.3 Kết quả chạy chương trình: 14
Chương 5 Kết luận 16
Trang 8DANH MỤC CÁC BẢNG
TrangBảng 3.1 –Phương thức lớp ServerSocket trong Java 9
Bảng 3.2 –Các phương thức phổ biến ServerSocket Java 10
Bảng 3.1 –Các phương thức lớp Socket trong Java 11
Bảng 3.4 –Một số phương thức của lớp Socket được quan tâm 12
Trang 9DANH MỤC HÌNH
Trang
Hình 2.2 – Tiêu chuẩn của một môi trường Java 4
Hình 3.3 – Mô hình hoạt động của Socket Java 7
Hình 4.1 – Màn hình cài đặt mật khẩu Server 14
Trang 10Chương 1 Tổng quan về đề tài
1.1 Mục đích chọn đề tài
Cùng với sự gia tăng ứng dụng của máy tính trong các lĩnh vực như đào tạo, kinhdoanh hay thương mại, thì những ứng dụng dựa trên mô hình client-server là khôngthể thiếu được Vấn đề chia sẻ tài nguyên hệ thống và đặc biệt là desktop (màn hình)
và các input (đầu vào) có ý nghĩa quan trọng trong việc phát triển ứng dụng trên môhình client-server thông qua mạng LAN cũng như internet
1.2 Giới thiệu đề tài
Xây dựng chương trình “Xây dựng ứng dụng Remote Desktop” Chương trình
cho phép một máy tính(Client) truy cập tới và thực hiên các chức năng điều khiển trênmột máy tính khác từ xa(Server)
Chương trình Remote Desktop:
+ Điều khiển trực tiếp qua màn hình, tiếp quản phím và chuột
+ Thực hiện được các các thao tác: tắt máy, khởi động lại máy, ngủ đông, khóamáy, chạy một số ứng dụng, gửi thông điệp
1.3 Phương pháp triển khai
Dùng phương pháp lập trình mạng TCP Socket threaded Server để tạo kết nốiClient-Server, tạo và biểu diễn các luồng I/O Server sẽ truy cập tới máy tính client vàthực hiên việc điều khiển
1
Trang 11Chương 2 Giới thiệu về ngôn ngữ lập trình Java
2.1 Giới thiệu về ngôn ngữ Java
Java là một ngôn ngữ lập lập trình, được phát triển bởi Sun Microsystem vàonăm 1995, là ngôn ngữ kế thừa trực tiếp từ C/C++ và là một ngôn ngữ lập trình hướngđối tượng
Ngày nay Java được sử dụng với các mục đích sau:
Phát triển ứng dụng cho các thiết bị điện tử thông minh, các ứng dụng chodoanh nghiệp với quy mô lớn
Tạo các trang web có nội dung động (web applet), nâng cao chức năng củaserver
Phát triển nhiều loại ứng dụng khác nhau: Cơ sở dữ liệu, mạng, Internet, viễnthông, giải trí,
2.2 Những đặc điểm cơ bản của Java
Tiêu chí hàng đầu của Ngôn ngữ Lập trình Java là "Write Once, Run Anywhere"(Viết một lần, chạy mọi nơi), nghĩa là Java cho phép chúng ta viết code một lần vàthực thi được trên các hệ điều hành khác nhau Ví dụ, chúng ta viết code trên Hệ điềuhành Windows và nó có thể thực thi được trên các Hệ điều hành Linux và Mac OS Với đặc điểm nổi bật đó, Java có những đặc điểm cơ bản như sau:
Đơn giản và quen thuộc: Vì Java kế thừa trực tiếp từ C/C++ nên nó có nhữngđặc điểm của ngôn ngữ này, Java đơn giản vì mặc dù dựa trên cơ sở C++ nhưngSun đã cẩn thận lược bỏ các tính năng khó nhất của của C++ để làm cho ngônngữ này dễ sử dụng hơn
Hướng đối tượng và quen thuộc
Mạnh mẽ (thể hiện ở cơ chế tự động thu gom rác - Garbage Collection) và antoàn
Kiến trúc trung lập, độc lập nền tảng và có tính khả chuyển (Portability)
Hiệu suất cao
Máy ảo (biên dịch và thông dịch)
Phân tán
2
Trang 12 Đa nhiệm: Ngôn ngữ Java cho phép xâ dựng trình ứng dụng, trong đó nhiều quátrình có thể xảy ra đồng thời Tính đa nhiệm cho phép các nhà lập trình có thểbiên soạn phần mềm đáp ứng tốt hơn, tương tác tốt hơn và thực hiện theo thờigian thực.
2.3 Các platform cơ bản của Java
Java Platform gồm có 3 thành phần chính:
Java Virtual Machine (Java VM): Máy ảo Java
Java Application Programming Interface (Java API)
Java Development Kit (JDK) gồm trình biên dịch, thông dịch, trợ giúp, soạn tàiliệu và các thư viện chuẩn
Hình 2.1 Các platform cơ bản của Java
3
Trang 132.4 Tiêu chuẩn của một môi trường Java điển hình
Thông thường, các chương trình Java trải qua 5 giai đoạn chính:
Editor: Lập trình viên viết chương trình và được lưu vào máy tính với định dạng.java
Compiler: Biên dịch chương trình thành bytecodes (định dạng class) - nhờ bước trung gian này mà Java được viết 1 lần và chạy trên các hệ điều hành khácnhau
Class Loader: Đọc file class chứa mã bytecodes và lưu vào trong bộ nhớ
Bytecode Verifier: Đảm bảo rằng mã bytecodes là hợp lệ và không vi phạm các vấn đề về bảo mật của Java
Intepreter: Biên dịch bytecodes thành mã máy để máy tính có thể hiểu được và sau đó thực thi chương trình
Hình 2.2 Tiêu chuẩn của một môi trường Java
4
Trang 14Chương 3 Giới thiệu lập trình Socket trong Java
3.1 Tổng quan về Socket
Trong hệ thống mạng máy tính tồn tại những mô hình tham chiếu có kiến trúcphần tầng (OSI, TCP/IP…) nhằm hỗ trợ chức năng trao đôi thông tin giữa các ứngdụng ở nhiều máy tính khác nhau
Hình 3.1 Tổng quan về socket
Dữ liệu bên gửi sẽ được đóng gói (Encapsulation) từ tầng trên đến tầng cuối làtầng vật lí (Physical Layer), sau đó nhờ tầng vật lí này chuyển dữ liệu đến tầng vật límáy bên nhận, bên nhận tiến hành giải mã (decapsulation) gói dữ kiện từ tầng dưới lêntầng trên cùng, là tầng ứng dụng (application layer)
5
Trang 15Hình 3.2 Mô hình hoạt động của socket
Ở đây, Socket chính là cửa giao tiếp giữa tầng ứng dụng và tầng giao vận(Transport layer) Nói cách khác, Socket là giao diện do ứng dụng tạo ra trên máytrạm, quản lí bởi hệ điều hành qua đó các ứng dụng có thể gửi/nhận thông điệp đến/từcác ứng dụng khác Ở đó, Socket sẽ được ràng buộc với một mã số cổng (PortNumber) để giúp tầng giao vận định danh được ứng dụng nhận/gửi thông điệp
Các bạn có thể thấy ở hình ảnh trên, tầng giao vận có 2 phương thức là TCP(Ttransmission Control Protocol) và UDP (User Datagram Protocol), như vậy socket
cơ bản là có 2 loại: Stream Socket sử dụng TCP truyền dòng bytes và DatagramSocket dử dụng UDP truyền gói tin Với ngôn ngữ lập trình Java, chúng ta được cungcấp 3 loại khác nhau của sockets:
Stream Socket (TCP) : Tạo luồng dữ liệu hai chiều, đáng tin cậy, có trình tự vàkhông trùng lặp, dữ liệu chỉ được gửi/nhận khi có đã có liên kết Dùng vớiSocket Class của java
Datagram Socket (UDP): Có thể nhận dữ liệu không theo tình tự, trùng lặp.Dùng với DatagramSocket Class
Multicast Socket : cho phép dữ liệu được gửi đến nhiều bên nhận một lúc Dùngvới DatagramSocket Class
6
Trang 163.2 Lập trình TCP Socket với Java
Hình 3.3 Mô hình hoạt động của socket 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 Khi clienttạ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ệptruyề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
Trang 17 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
Hình 3.4 Mô hình Client-Server
Chúng ta có thể thấy rằng mỗi phía server và client đều có 2 luồng dữliệu, một luồng ra Socket để gửi thông điệp và một luồng vào từ Socket để nhậnthông điệp, như vậy với mỗi bên mình có hai biến input và output(inFromServer, outToServer và inFromClient, outToClient)
8
Trang 183.3 Các phương thức lớp ServerSocket trong Java
Lớp java.net.ServerSocket trong Java được sử dụng bởi các ứng dụng Server để thunhận một cổng và nghe các yêu cầu từ Client
Lớp ServerSocket có 4 constructor sau:
STT Phương thức và miêu tả
Cố gắng để tạo một Server Socket giới hạn với số hiệu cổng đã xác định.Một exception xuất hiện nếu cổng này thuộc phạm vi của ứng dụngkhác
Tương tự như constructor trước, tham số backlog xác định có bao nhiêuClient đang vào để lưu giữ trong một hàng đợi (wait queue)
throws IOException
Tương tự như constructor trước, tham số InetAddress xác định địa chỉ IPnội bộ để kết nối tới InetAddress này được sử dụng cho các Server mà
có thể có nhiều địa chỉ IP, cho phép Server xác định địa chỉ IP nào của
nó để chấp nhận yêu cầu của Client
Tạo một Server Socket không giới hạn Khi sử dụng constructor này, sửdụng phương thức bind() khi bạn đã kết nối với Server Socket
Bảng 3.1 Phương thức lớp ServerSocket trong Java
Nếu ServerSocket constructor không ném một exception, nghĩa là ứng dụng của bạn
đã thành công kết nối tới cổng đã xác định và sẵn sàng cho các yêu cầu của Client
Bảng dưới liệt kê các phương thức phổ biến của lớp ServerSocket trong Java:
STT Phương thức và miêu tả
9
Trang 191 public int getLocalPort()
Trả về cổng mà Server Socket đang nghe trên đó Phương thức này hữudụng nếu bạn truyền số hiệu cổng là 0 trong một constructor và để Servertìm một cổng cho bạn
Đợi cho một Client đang đến Phương thức này block tới khi một Clientkết nối tới Server trên cổng đã xác định hoặc Socket là trễ (timeout), giả
sử rằng giá trị time-out đã được thiết lập với phương thức setSoTimeout().Nếu không thì, phương thức này block vô hạn
Thiết lập giá trị timeout cho Server Socket đợi một Client trong bao lâu,trong khi phương thức accept() gọi
Nối kết Socket tới Server và cổng đã xác định trong đối tượngSocketAddress Sử dụng phương thức này nếu bạn đã khởi tạo đối tượngServerSocket với constructor không có tham số
Bảng 3.2 Các phương thức phổ biến ServerSocket Java
Khi ServerSocket gọi phương thức accept(), phương thức này không trả về giá trịtới khi một Client kết nối Sau khi một Client kết nối, ServerSocket tạo một Socketmới trên một cổng chưa được xác định và trả về một tham chiếu tới Socket mới này.Bây giờ, một kết nối TCP tồn tại giữa Client và Server, và giao tiếp có thể bắt đầu
3.4 Các phương thức lớp Socket trong Java
Lớp java.net.Socket biểu diễn socket mà cả Client và Server sử dụng để kết nối
với nhau Client thu nhận một đối tượng Socket bằng việc khởi tạo nó, trong khiServer thu nhận một đối tượng Socket từ giá trị trả về của phương thức accept()
Lớp Socket có 5 constructor mà một Client sử dụng để kết nối tới một Server:
STT Phương thức và miêu tả
10
Trang 201 public Socket(String host, int port) throws
UnknownHostException, IOException.
Phương thức này cố gắng kết nối tới Server đã xác định tại cổng đãxác định Nếu constructor này không ném một exception, kết nối làthành công và Client được kết nối tới Server
Phương thức này tương tự constructor trước, ngoại trừ host được biểuthị bởi một đối tượng InetAddress
localPort) throws IOException.
Kết nối tới host và cổng đã xác định, tạo một Socket trên host nội bộtại địa chỉ và cổng đã xác định
localAddress, int localPort) throws IOException.
Phương thức này tương tự constructor trước, ngoại trừ host được biểuthị bởi một đối tượng InetAddress thay vì một String
Tạo một Socket rời rạc Sử dụng phương thức connect() để kết nốiSocket này tới một Server
Bảng 3.3 Các phương thức lớp Socket trong Java
Một số phương thức của lớp Socket quan tâm được liệt kê dưới đây Cả Server
và Client đều có một đối tượng Socket, vì thế những phương thức này có thể được gọibởi cả Client và Server
IOException
11
Trang 21Phương thức này kết nối Socket tới host đã xác định Phương thức nàychỉ cần thiết khi bạn đã khởi tạo Socket bởi sử dụng constructor không
có tham số
Phương thức này trả về địa chỉ của máy tính khác mà Socket này đượckết nối tới
Trả về cổng mà Socket được kết nối trên thiết bị từ xa
Trả về cổng mà Socket được kết nối trên thiết bị nội bộ
Trả về địa chỉ của Socket từ xa
Trả về input stream của Socket Input stream được kết nối tới outputstream của Socket từ xa
Trả về output stream của Socket Output stream được kết nối tới inputstream của Socket từ xa
Đóng Socket, mà làm đối tượng Socket này không còn khả năng kết nối
12
Trang 22Chương 4 Remote Desktop:
Remote Desktop là kết nối cơ bản với giao diện đồ họa được thiết kế để tạođiều kiện thuận lợi cho người sử dụng tương tác với một hệ máy tính từ xa bằng cáchcập nhật những thông tin đồ họa đến từ máy tính từ xa tới người sử dụng và đồng bộthông tin quản lý của người dùng tương tác đến máy tính ở xa, giống như đang ngồi tạichính máy đó
Giao thức này cũng cung cấp một cơ chế cho phép đơn giản hóa việc truyềnthông chuyên dụng mở rộng giữa người sử dụng máy tính trực tiếp và những thànhphần chạy trên máy tính ở xa
4.1 Cơ chế hoạt động của Remote Desktop:
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áy kèmvới địa chỉ IP và port number của tiến tình tương ứng trên máy server Khi client tạoSocket, client TCP tạo liên kết với server TCP và chờ chấp nhận kết nối từ server.Khi đã kết nối được với Server, Server sẽ tiến hành gửi màn hình qua máy ClientKhi đã nhận được màn hình, Client sẽ hiển thị màn hình điều khiển Khi thựchiện điều khiển ở Client sẽ có một lớp SendEvent gửi sự kiện sang Server Khi Servernhận được sự kiện từ Client gửi thì sẽ dùng đối tượng Robot để thực thi
13