SlideShare uma empresa Scribd logo
1 de 27
MỤC LỤC
TỔNG QUAN VỀ ĐỀ TÀI
Xây d ng ch ng trình “Đi u khi n t xa” v i mô hình Client-Serverự ươ ề ể ừ ớ
Giới thiệu đề tài
Xây dựng chương trình “Điều khiển từ xa”.
Chương trình Client : cho phép server truy cập tới và thực hiên các chức năng điều
khiển.
Chương trình Server:
Gởi thông điệp đến máy client.
Truyền và nhận file với máy client.
Chụp màn hình với máy client.
Theo dõi màn hình với máy client.
2. 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ối Client-
Serve, 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.
Trang | 2
SVTH: Nguyễn Thị Mỹ Linh –Hồ Thị Ngọc Ánh
Xây dựng chương trình “Điều khiển từ xa” theo mô hình Client-Server
Chương 1. CƠ SỞ LÝ THUYẾT
Giới thiệu mô hình ứng dụng Client-Server
1.1. Kiến trúc Client-Server
Tổng Quan
Trang | 3
GVHD: Phạm Minh Tuấn
Xây d ng ch ng trình “Đi u khi n t xa” v i mô hình Client-Serverự ươ ề ể ừ ớ
Kiến trúc Client-Server được sử dụng trong các hệ thống phân tán và bao gồm hai thành
phần riêng biệt: Server đóng vai trò phục vụ cung cấp chức năng và Client đóng vai
trò người tiêu thụ sử dụng các chức năng đó. Thông thường hai thành phần này kết
nối với nhau qua mạng, với Client là bên chủ động tạo kết nối và gửi yêu cầu đến
Server, trong khi Server thụ động lắng nghe và hồi đắp các yêu cầu đó.
Mô hình Client-Server đơn giản nhất gồm một Server phục vụ cho một hoặc nhiều
Client đồng thời, còn gọi là kiến trúc hai lớp (2-Tier). Một ví dụ phổ biến nhất cho
các ứng dung Client-Server là các chương trình chat và email đá quá thông dụng
hiện nay.
Hình 1. Mô hình Client-Server.
1.1. 2. Các ưu điểm của kiến trúc Client-Server
Quản lý tập trung: dữ liệu được lưu trữ tập trung trên Server thay vì nằm rải rác
trênnhiều máy, giúp đơn giản hóa việc truy xuất và cập nhật dữ liệu.
Trang | 4
SVTH: Nguyễn Thị Mỹ Linh –Hồ Thị Ngọc Ánh
Xây dựng chương trình “Điều khiển từ xa” theo mô hình Client-Server
Dễ bảo trì: nhờ khả năng quản lý tập trung mà công việc bảo trì cũng trở nên nhẹ nhàng
hơn vì phần lớn việc bảo trì chỉ cần thực hiện trên Server. Trong trường hợp hệ
thống có nhiều Server với thiết bị dự phòng, quá trình bảo trì (như sửa chữa, thay
thế Server) có thể diễn ra hoàn toàn trong suốt với phía Client.
Bảo mật dữ liệu tập trung trên Server đồng nghĩa với việc kiểm soát dễ dàng hơn.
Hình 2 . Mô hình hệ thống Email theo cấu trúc Client-Server.
1.2. Ứng dụng theo mô hình Client-Server
1.2. 3. Cách hoạt động
Các tiến trình Clients và Servers có thể chạy cùng một trạm (host) hoặc các trạm khác
nhau và là các đối tượng logic tách biệt và liên lạc với nhau qua mạng để cùng thực
hiện một công việc. Trong đó:
Server: quản lý nguồn tài nguyên, nhận request từ Clients để cung cấp và phân phối tài
nguyên cho Clients.
Trang | 5
GVHD: Phạm Minh Tuấn
Xây d ng ch ng trình “Đi u khi n t xa” v i mô hình Client-Serverự ươ ề ể ừ ớ
Client: là chương trình giao tiếp với người sử dụng, có nhiệm vụ gửi request cho
Server và thể hiện việc tiếp nhận tài nguyên đó.
Client:
Khởi tạo liên lạc với Server trước.
Yêu cầu dịch vụ nào đó từ Server.
Server:
Chấp nhận yêu cầu và tạo kết nối với Client.
Tính toán rồi cung cấp dịch vụ theo yêu cầu từ Client
Hình 3. Cách hoạt động của mô hình Client-Server.
1.2. 3. Đặc trưng của mô hình ứng dụng Client-Server
Hoạt động theo kiểu giao thức bất đối xứng
Thể hiện quan hệ một chiều giữa các Client và một Server.
Client bắt đầu phiên hội thoại bằng cách yêu cầu dịch vụ
Server sẵn sang chờ các yêu cầu từ Client.
Trang | 6
SVTH: Nguyễn Thị Mỹ Linh –Hồ Thị Ngọc Ánh
Xây dựng chương trình “Điều khiển từ xa” theo mô hình Client-Server
Hình 4. Giao thức hoạt động bất đối xứng của các tiến trình Client-Server.
Chia sẻ tài nguyên:
Một Server có thể chia sẻ tài nguyên cho nhiều Client cùng một lúc.
Server cũng có khả năng điều phối truy nhập các Client đến các tài nguyên dùn chung.
Lập trình với giao thức TCP, Multi-threading
2.1. Tổng quan
Trong mô hình ứng dụng Client-Server, thông thường, các chương trình chạy trên máy
Client sẽ gửi requests tới một chương trình (thường được gọi là chương trình
Server) đang chạy trên máy Server. Các gói request này bao gồm các dịch vụ mạng
được cung cấp bởi tầng lớp giao vận (transport layer), là một phần của kiến trúc
phân tầng mạng, thường được gọi là TCP/IP (Transport Control Protocol/Internet
Protocol). Tầng giao vận bao gồm hai loại giao thức là TCP và UDP(User
Datagram Protocol)
Trang | 7
GVHD: Phạm Minh Tuấn
Xây d ng ch ng trình “Đi u khi n t xa” v i mô hình Client-Serverự ươ ề ể ừ ớ
Hình 5. Tầng vận chuyển Transport với TCP/IP.
TCP là một giao thức truyền hướng đối tượng được thực hiện bởi một luồng dữ liệu tin
cậy giữa hai máy tính khi có thiết lập kết nối. Ví dụ những ứng dụng được sử dụng
những dịch vụ như HTTP, FTP và Telnet.
2. 2. IP, Cổng Port và Socket
Mọi máy tính trong môi trường Internet đều được xác định bởi địa chỉ IP 4-byte mà
được viết dạng chấm như 128.250.25.158, trong đó mỗi byte là một giá trị không
dấu từ 0 đến 255. Nhưng cách đặt tên cho địa chỉ như vậy thì không thân thiện bởi
vì nó chẳng nói lên được bất cứ điều gì về nội dung và thật khó để nhớ những dãy
byte đó. Do đó, địa chỉ IP được xác định bởi những cái tên như www.google.com.vn
để cho dễ nhớ.
Trang | 8
SVTH: Nguyễn Thị Mỹ Linh –Hồ Thị Ngọc Ánh
Xây dựng chương trình “Điều khiển từ xa” theo mô hình Client-Server
Hình 6. Ánh xạ tên miền
Thông thường, mỗi máy tính chỉ có một địa chỉ IP. Tuy nhiên, các máy tính thường cần
kết nối và cung cấp hơn một loại kiểu dịch vụ hoặc để thông báo cho nhiều
máychủ/máy tính cùng thời điểm. Ví dụ, trong một máy tính đang làm việc, có thể
có nhiều phiên ftp, các kết nối web, và các chương trình chat và tất cả chương trình
này cùng chạy một thời điểm. Vậy đển phân biệt các dịch vụ này, ta có khái niệm về
cổng (port), là một điểm truy cập logic được biểu diễn bởi một số nguyên 16-bit
gắn cho mỗi tiến trình mạng. Và mỗi tiến trình mạng đều được gắn một cổng duy
nhất.
Hình 7. Biểu đồ các gói tin được gắn bởi một cổng nhất định.
Trang | 9
GVHD: Phạm Minh Tuấn
Xây d ng ch ng trình “Đi u khi n t xa” v i mô hình Client-Serverự ươ ề ể ừ ớ
Một socket là một đầu cuối của một sự truyền thông hai chiều, liên kết giữa hai chương
trình chạy trên mạng.
Một socket được gắn với một số hiệu cổng (port), vì thế tầng giao vận có thể nhận biết
ứng dụng mà dữ liệu được chuyển đến.
Socket cho phép thực hiện các hoạt động sau:
Kết nối đến máy ở xa
Gửi dữ liệu
Nhận dữ liệu
Đóng kết nối
Gắn với một cổng
Lắng nghe dữ liệu đến
Chấp nhận kết nối từ máy ở xa trên cổng đã được gắn.
Một (chương trình) server chạy trên một máy tính cụ thể và có một socket được gắn
bởi một cổng cụ thể. Chương trình server sẽ lắng nghe socket từ một client để tạo
một yêu cầu kết nối. Nếu thành công, chương trình server chấp nhận kết nối. Sau
khi chấp nhận kết nối, chương trình server có một socket mới được gắn bởi một
cổng khác. Nó cần một socket mới để có thể tiếp tục lắng nghe socket ban đầu cho
yêu cầu kết nối trong khi phục vụ cho việc kết nối với client.
Trang | 10
SVTH: Nguyễn Thị Mỹ Linh –Hồ Thị Ngọc Ánh
Xây dựng chương trình “Điều khiển từ xa” theo mô hình Client-Server
Hình 8. Thiết lập đường dẫn cho kết nối hai chiều giữa client và server.
2. 3. Lập trình TCP Socket
Có hai lớp của gói java.net được sử dụng để tạo những chương trình server và client:
ServerSocket
Socket
Một chương trình server tạo một socket cụ thể được sử dụng để chờ lắng nghe kết nối
từ yêu cầu của client (server socket). Trong một yêu cầu kết nối, chương trình tạo
ra một socket mới mà thông qua đó nó sẽ trao đổi dữ liệu với client sử dụng các
luồng input và output. Người lập trình phải mở một socket, thực hiên các việc tạo
và biểu diễn các luồng I/O, và sau đó là đóng socket.
Hình 9. Chương trình client-server có kết nối socket.
Các bước tạo một chương trình server đơn giản:
Trang | 11
GVHD: Phạm Minh Tuấn
Xây d ng ch ng trình “Đi u khi n t xa” v i mô hình Client-Serverự ươ ề ể ừ ớ
Mở cổng:
ServerSocket server = new ServerSocket(PORT);
Chờ kết nối từ Client:
Socket client = server.accept();
Tạo các luồng I/O cho sự kết nối với Client
DataInputStream dis = new DataInputStream(client.getInputStream());
DataOutputStream dos = new DataOutputStream(client.getOutputStream());
Biểu diễn việc kết nối với Client
Nhận từ client: String line = dis.readLine();
Gửi tới client: dos.writeBytes(“Hellon”);
Đóng socket
client.close();
Các bước tạo một chương trình client đơn giản:
Tạo một đối tượng socket
Socket client = new Socket(server, port_id);
Tạo các luồng I/O cho sự kết nối với server
dis = new DataInputStream(client.getInputStream());
dos = new DataOutputStream(client.getOutputStream());
Thực hiện nhận và truyền dữ liệu qua luồng I/O
Nhận dữ liệu từ server: String line = dis.readLine();
Trang | 12
SVTH: Nguyễn Thị Mỹ Linh –Hồ Thị Ngọc Ánh
Xây dựng chương trình “Điều khiển từ xa” theo mô hình Client-Server
Gửi dữ liệu đến server: dos.writeBytes(“Hellon”);
Đóng socket khi hoàn thành
client.close();
Hình 10. Các bước tạo một ứng dựng TCP.
Hai chương trình ví dụ sau sẽ minh họa cơ chế của Server và Client:
Chương trình Server:
// SimpleServer.java: A simple server program.
import java.net.*;
Trang | 13
GVHD: Phạm Minh Tuấn
Xây d ng ch ng trình “Đi u khi n t xa” v i mô hình Client-Serverự ươ ề ể ừ ớ
import java.io.*;
public class SimpleServer {
public static void main(String args[]) throws IOException {
// Register service on port 7000
ServerSocket s = new ServerSocket(7000);
Socket s1=s.accept(); // Wait and accept a connection
// Get a communication stream associated with the socket
OutputStream s1out = s1.getOutputStream();
DataOutputStream dos = new DataOutputStream (s1out);
// Send a string!
dos.writeUTF(“Hi there”);
// Close the connection, but not the server socket
dos.close();
s1out.close();
s1.close();
}
}
Chương trình Client:
// SimpleClient.java: A simple client program.
Trang | 14
SVTH: Nguyễn Thị Mỹ Linh –Hồ Thị Ngọc Ánh
Xây dựng chương trình “Điều khiển từ xa” theo mô hình Client-Server
import java.net.*;
import java.io.*;
public class SimpleClient {
public static void main(String args[]) throws IOException {
// Open your connection to a server, at port 7000
Socket s1 = new Socket(“localhost”,7000);
// Get an input file handle from the socket and read the input
InputStream s1In = s1.getInputStream();
DataInputStream dis = new DataInputStream(s1In);
String st = new String (dis.readUTF());
System.out.println(st);
// When done, just close the connection and exit
dis.close();
s1In.close();
s1.close();
}
}
2. 4. Lập trình với chương trình server đa tuyến (ThreadServer)
Để cho phép nhiều client có thể kết nối đến server thì server phải là chương trình đa
tuyến. Mối tuyến (thread) đảm nhận việc liên lạc với client. Nghĩa là khi có một
client kết nối đến, chương trình server sinh ra một tuyến (thread) để điều khiển việc
truyền thông với client.
Trang | 15
GVHD: Phạm Minh Tuấn
Xây d ng ch ng trình “Đi u khi n t xa” v i mô hình Client-Serverự ươ ề ể ừ ớ
Các bước tạo chương trình đa server đa tuyến
Tạo một lớp extends đến lớp Thread và ghi đè lên phương thức run():
class MyThread extends Thread {
public void run() {
// Nơi thực thi
}
}
Tạo một đối tượng thread:
MyThread thr1 = new MyThread();
Bắt đầu thực thi lớp Thread đã được tạo:
thr1.start();
Một chương trình ví dụ minh họa việc tạo và gọi một đối tượng thread:
extending the standard Thread class. */
class MyThread extends Thread {
public void run() {
System.out.println(“ this thread is running ... ”);
}
}
class ThreadEx1 {
public static void main(String [] args ) {
Trang | 16
SVTH: Nguyễn Thị Mỹ Linh –Hồ Thị Ngọc Ánh
Xây dựng chương trình “Điều khiển từ xa” theo mô hình Client-Server
MyThread t = new MyThread();
t.start();
}
}
3. Lập trình với JAVA
3.1. Giới thiệu khái quát ngôn ngữ Java
Java (đọc như “Gia-va”) 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 nhanh hơn những
ngôn ngữ lập trình thông dịch khác như Python, Perl, PHP,…
Cú pháp Java được vay mượn nhiều từ C & C++ nhưng có cú pháp hướng đối tượng
đơn giản hơn và ít tính năng xử lý cấp thấp hơn.
3. 2. Một số đặt điểm nổi bật của ngôn ngữ lập trình Java
3.2.1. Máy ảo Java (JVM – Java Virtual Machine)
Tất cả các chương trình muốn thực thi được thì phải được biên dịch ra mã máy.Mã máy
của từng kiến trúc CPU của mỗi máy tính là khác nhau (tập lệnh mã máy của CPU
Intel, CPU Solarix, CPU Macintosh … là khác nhau), vì vậy trước đây một chương
trình sau khi được biên dịch xong chỉ có thể chạy được trên một kiến trúc CPU cụ
thể nào đó. Đối với CPU Intel chúng ta có thể chạy các hệ điều hành như Microsoft
Windows, Unix, Linux, OS/2, …
Trang | 17
GVHD: Phạm Minh Tuấn
Xây d ng ch ng trình “Đi u khi n t xa” v i mô hình Client-Serverự ươ ề ể ừ ớ
Chương trình thực thi được trên Windows được biên dịch dưới dạng file có đuôi .EXE
còn trên Linux thì được biên dịch dưới dạng file có đuôi .ELF, vì vậy trước đây một
chương trình chạy được trên Windows muốn chạy được trên hệ điều hành khác như
Linux chẳng hạn thì phải chỉnh sửa và biên dịch lại.
Ngôn ngữ lập trình Java ra đời, nhờ vào máy ảo Java mà khó khăn nêu trên đã được
khắc phục. Một chương trình viết bằng ngôn ngữ lập trình Java sẽ được biên dịch ra
mã của máy ảo java (mã java bytecode). Sau đó máy ảo Java chịu trách nhiệm
chuyển mã java bytecode thành mã máy tương ứng.Sun Microsystem chịu trách
nhiệm phát triển các máy ảo Java chạy trên các hệ điều hành trên các kiến trúc CPU
khác nhau.
Thông dịch:
Java là một ngôn ngữ lập trình vừa biên dịch vừa thông dịch. Chương trình nguồn viết
bằng ngôn ngữ lập trình Java có đuôi *.java đầu tiên được biên dịch thành tập tin có
đuôi *.class và sau đó sẽ được trình thông dịch thông dịch thành mã máy.
Độc lập nền:
Một chương trình viết bằng ngôn ngữ Java có thể chạy trên nhiều máy tính có hệ điều
hành khác nhau (Windows, Unix, Linux, …) miễn sao ở đó có cài đặt máy ảo java
(Java Virtual Machine). Viết một lần chạy mọi nơi (write once run anywhere).
Hướng đối tượng:
Hướng đối tượng trong Java tương tự như C++ nhưng Java là một ngôn ngữ lập trình
hướng đối tượng hoàn toàn. Tất cả mọi thứ đề cập đến trong Java đều liên quan
đến các đối tượng được định nghĩa trước, thậm chí hàm chính của một chương
trình viết bằng Java (đó là hàm main) cũng phải đặt bên trong một lớp. Hướng đối
tượng trong Java không có tính đa kế thừa (multi inheritance) như trong C++ mà
thay vào đó Java đưa ra khái niệm interface để hỗ trợ tính đa kế thừa. Vấn đề này
sẽ được bàn chi tiết trong phần sau.
Trang | 18
SVTH: Nguyễn Thị Mỹ Linh –Hồ Thị Ngọc Ánh
Xây dựng chương trình “Điều khiển từ xa” theo mô hình Client-Server
Đa nhiệm – đa luồng (MultiTasking – Multithreading):
Java hỗ trợ lập trình đa nhiệm, đa luồng cho phép nhiều tiến trình, tiểu trình có thể
chạy song song cùng một thời điểm và tương tác với nhau.
Khả chuyển (portable):
Chương trình ứng dụng viết bằng ngôn ngữ Java chỉ cần chạy được trên máy ảo Java
là có thể chạy được trên bất kỳ máy tính, hệ điều hành nào có máy ảo Java. “Viết
một lần, chạy mọi nơi” (Write Once, Run Anywhere).
Hỗ trợ mạnh cho việc phát triển ứng dụng:
Công nghệ Java phát triển mạnh mẽ nhờ vào “đại gia Sun Microsystem” cung cấp
nhiều công cụ, thư viện lập trình phong phú hỗ trợ cho việc phát triển nhiều loại
hình ứng dụng khác nhau cụ thể như: J2SE (Java 2 Standard Edition) hỗ trợ phát
triển những ứng dụng đơn, ứng dụng client-server; J2EE (Java 2 Enterprise
Edition) hỗ trợ phát triển các ứng dụng thương mại, J2ME (Java 2 Micro Edition)
hỗ trợ phát triển các ứng dụng trên các thiết bị di động, không dây, …
Trang | 19
GVHD: Phạm Minh Tuấn
Xây d ng ch ng trình “Đi u khi n t xa” v i mô hình Client-Serverự ươ ề ể ừ ớ
Chương 1. THIẾT KẾ VÀ XÂY DỰNG CHƯƠNG TRÌNH
2.1. Phân tích yêu cầu
Trang | 20
SVTH: Nguyễn Thị Mỹ Linh –Hồ Thị Ngọc Ánh
Xây dựng chương trình “Điều khiển từ xa” theo mô hình Client-Server
Đề tài xây dựng chương trình “Điều Khiển Từ Xa”:
Chương trình có 3 bước thực hiện để truy cập tới máy Client:
Xây dựng chương trình Điều Khiển Từ Xa
Chương trình Client : cho phép server truy cập tới và thực hiên các chức năng điều
khiển.
Chương trình Server:
- Gởi thông điệp đến mấy client.
- Truyền và nhận file với máy client.
- Chụp màn hình với máy client.
- Theo dõi màn hình với máy client.
Client hiển thị giao diện dễ sử dụng cho người sử dụng. Client kết nối với Server thông
qua giao thức TCP/IP và UDP để truyền file qua cho nhau .
Server mở cổng kết nối với các Client, nhận yêu cầu từ phía Client, thực hiện việc
Remote tới Client , lấy thông tin cần thiết và gửi trả cho Server.
2.2. Phân tích các chức năng
Chương trình được viết theo mô hình Client-Server.Ở Client và Server sẽ thực hiện các
chức năng khác nhau để cùng tạo nên một chương trình hoàn chỉnh.
Client có chức năng: cho phép kết nối tới Server.
Server có chức năng:
- Gởi thông điệp đến mấy client.
- Truyền và nhận file với máy client.
- Chụp màn hình với máy client.
Trang | 21
GVHD: Phạm Minh Tuấn
Xây d ng ch ng trình “Đi u khi n t xa” v i mô hình Client-Serverự ươ ề ể ừ ớ
- Theo dõi màn hình với máy client.
Mô hình tổng quát của chương trình được mô tả theo sơ đồ sau:
Hình 11: mô hình tổng quát chương trình
Mô tả cách thức hoạt động:
1: Client gửi yêu cầu tới Server.
2: Server tiếp nhận yêu cầu kết nối từ Client, tất cả các dữ liệu giữa client và server sẽ
được kết nối thông với nhau.
3: Trao đổi dữ liệu giữa client tới server, từ đây server và client gởi dữ liệu xuyên suốt
với nhau.
3.1. Xây dựng các chức năng
Client: chương trình tại Client được xây dựng thành 3 lớp
Mô tả chương trình Client:
1: Client gửi yêu cầu tới Server.
2: Client nhận kết nối từ Server và lấy được màn hình từ Client.
Trang | 22
SVTH: Nguyễn Thị Mỹ Linh –Hồ Thị Ngọc Ánh
Xây dựng chương trình “Điều khiển từ xa” theo mô hình Client-Server
3: Client gửi dữ liệu xuyên suốt cho Server.
Server: chương trình Server được xây dựng dựa trên 2 lớp:
Mô tả chương trình Server:
1: Tiếp nhận yêu cầu kết nối từ Client.
2: Tạo Thread cho mỗi Client kết nối.
3: Thread kết nối để lấy dữ liệu theo yêu cầu Client.
4: ThreadClient nhận dữ liệu từ ThreadServer.
5: Gửi trả về cho Client.
6: Tiếp nhận dữ liệu từ Client.
Lớp chính: chịu trách nhiệm mở và chấp nhận kết nối từ phía Client, sau đó sẽ gọi tới
lớp Thread , mỗi Thread chịu trách nhiệm trao đổi với 1 Client, với port kể từ khi
được tạo ra tới khi Client đóng kết nối. Lớp chính chứa các phương thức tách dữ
liệu được lấy từ Client về.
Lớp Thread: sẽ chịu trách nhiệm làm việc với Client kể từ sau khi Server đã chấp nhận
kết nối. Lớp này gọi các phương thức trong lớp chính để giao tiếp với Client.
Trang | 23
GVHD: Phạm Minh Tuấn
Xây d ng ch ng trình “Đi u khi n t xa” v i mô hình Client-Serverự ươ ề ể ừ ớ
Chương 2 KẾT LUẬN VÀ HUỚNG PHÁT TRIỂN
3.1. Kết quả chạy chương trình
Hình 12: Khởi động Server
Trang | 24
SVTH: Nguyễn Thị Mỹ Linh –Hồ Thị Ngọc Ánh
Xây dựng chương trình “Điều khiển từ xa” theo mô hình Client-Server
Hình 13: Khởi động Client
3.2. Đánh giá và nhận xét:
Trong khuôn khổ đề tài chúng em đã cơ bản làm rõ một số vấn đề cơ bản liên quan đến
môn học Lập Trình Mạng, và đã xây dựng thành công một chương trình demo nhằm
làm rõ các vấn đề lí thuyết. Đồ án đã đạt được một số kết quả như sau :
Tìm hiểu được cách xây dựng một chương trình với giao thức TCP/IP theo mô hình
client – server.
Tìm hiểu được các khái niệm cơ bản về lập trình mạng, phân tầng mạng, cách lấy dữ
liệu từ máy client….
Ứng dụng Socket và đa luồng trong ngôn ngữ Java để xây dựng một chương trình theo
mô hình client – server.
Tuy nhiên về mặt ứng dụng đồ án vẫn còn rất nhiều điểm hạn chế như chương trình
vẫn chưa thực sự hoàn thiện để có thể trở thành sản phẩm thương mại. Bên cạnh đó
việc quản lí nhóm, quản lí mã nguồn vẫn còn diễn ra rất thủ công chưa thực sự áp
dụng đúng quy trình của công nghệ phần mềm. Tuy vậy chúng em xin kết thúc đồ
án lập trình mạng với đề tài “xây dựng chương trình Điều Khiển Từ Xa theo mô
hình client – server” tại đây. Chúng em cũng xin được cảm ơn sự hướng dẫn và
giúp đỡ tận tình của thầy “Phạm Minh Tuấn” trong suốt quá trình thực hiện đề tài.
3.2. Hướng phát triển
Về cơ bản, nghiên cứu đã đạt được những yêu cầu đã đặt ra. Tuy nhên nếu có điều
kiện, đồ án sẽ cố gắng phát triển thêm các chức năng sau:
Trang | 25
GVHD: Phạm Minh Tuấn
Xây d ng ch ng trình “Đi u khi n t xa” v i mô hình Client-Serverự ươ ề ể ừ ớ
Truyền âm thanh giữa Client-Server
TÀI LIỆU THAM KHẢO
Trang | 26
SVTH: Nguyễn Thị Mỹ Linh –Hồ Thị Ngọc Ánh
Xây dựng chương trình “Điều khiển từ xa” theo mô hình Client-Server
[1] TS.Huỳnh Công Pháp, Giáo trình lập trình mạng(2004-
2006), Đại Học Đà Nẵng
[2] http://diendan.congdongcviet.com/showthread.php?t=161040
Trang | 27
GVHD: Phạm Minh Tuấn

Mais conteúdo relacionado

Mais procurados

Phân tích thiết kế hệ thống của hàng bán điện thoại di động
Phân tích thiết kế hệ thống của hàng bán điện thoại di độngPhân tích thiết kế hệ thống của hàng bán điện thoại di động
Phân tích thiết kế hệ thống của hàng bán điện thoại di độngNguyễn Danh Thanh
 
Slide Báo Cáo Đồ Án Tốt Nghiệp CNTT
Slide Báo Cáo Đồ Án Tốt Nghiệp CNTTSlide Báo Cáo Đồ Án Tốt Nghiệp CNTT
Slide Báo Cáo Đồ Án Tốt Nghiệp CNTTHiệu Nguyễn
 
Phân tích và thiết kế hệ thống quản lý bán hàng
Phân tích và thiết kế hệ thống quản lý bán hàngPhân tích và thiết kế hệ thống quản lý bán hàng
Phân tích và thiết kế hệ thống quản lý bán hàngleemindinh
 
đồ áN xây dựng ứng dụng website tin tức
đồ áN xây dựng ứng dụng website tin tứcđồ áN xây dựng ứng dụng website tin tức
đồ áN xây dựng ứng dụng website tin tứcnataliej4
 
Multimedia
MultimediaMultimedia
Multimediaktvinh
 
Quy tắc thiết kế giao diện và viết code C#
Quy tắc thiết kế giao diện và viết code C#Quy tắc thiết kế giao diện và viết code C#
Quy tắc thiết kế giao diện và viết code C#An Nguyen
 
Do an xay_dung_website_thuong_mai_dien_tu
Do an xay_dung_website_thuong_mai_dien_tuDo an xay_dung_website_thuong_mai_dien_tu
Do an xay_dung_website_thuong_mai_dien_tuThiênĐàng CôngDân
 
Báo Cáo Cuối Ký Thực Tập Tốt Nghiệp Xậy Dựng Web Bán Hàng Trực Tuyến bằng Ope...
Báo Cáo Cuối Ký Thực Tập Tốt Nghiệp Xậy Dựng Web Bán Hàng Trực Tuyến bằng Ope...Báo Cáo Cuối Ký Thực Tập Tốt Nghiệp Xậy Dựng Web Bán Hàng Trực Tuyến bằng Ope...
Báo Cáo Cuối Ký Thực Tập Tốt Nghiệp Xậy Dựng Web Bán Hàng Trực Tuyến bằng Ope...hoainhan1501
 
Giáo trình mạng máy tính
Giáo trình mạng máy tínhGiáo trình mạng máy tính
Giáo trình mạng máy tínhHoài Phạm
 
Hệ điều hành (chương 2)
Hệ điều hành (chương 2)Hệ điều hành (chương 2)
Hệ điều hành (chương 2)realpotter
 
Xây dựng biểu đồ use case
Xây dựng biểu đồ use caseXây dựng biểu đồ use case
Xây dựng biểu đồ use caseTrung Chinh Hà
 

Mais procurados (20)

Phân tích thiết kế hệ thống của hàng bán điện thoại di động
Phân tích thiết kế hệ thống của hàng bán điện thoại di độngPhân tích thiết kế hệ thống của hàng bán điện thoại di động
Phân tích thiết kế hệ thống của hàng bán điện thoại di động
 
Slide Báo Cáo Đồ Án Tốt Nghiệp CNTT
Slide Báo Cáo Đồ Án Tốt Nghiệp CNTTSlide Báo Cáo Đồ Án Tốt Nghiệp CNTT
Slide Báo Cáo Đồ Án Tốt Nghiệp CNTT
 
Đề tài: Xây dựng website giới thiệu sản phẩm phần mềm, HOT
Đề tài: Xây dựng website giới thiệu sản phẩm phần mềm, HOTĐề tài: Xây dựng website giới thiệu sản phẩm phần mềm, HOT
Đề tài: Xây dựng website giới thiệu sản phẩm phần mềm, HOT
 
Chuong 3. cnpm
Chuong 3. cnpmChuong 3. cnpm
Chuong 3. cnpm
 
Phân tích và thiết kế hệ thống quản lý bán hàng
Phân tích và thiết kế hệ thống quản lý bán hàngPhân tích và thiết kế hệ thống quản lý bán hàng
Phân tích và thiết kế hệ thống quản lý bán hàng
 
đồ áN xây dựng ứng dụng website tin tức
đồ áN xây dựng ứng dụng website tin tứcđồ áN xây dựng ứng dụng website tin tức
đồ áN xây dựng ứng dụng website tin tức
 
Đè tài: Phân tích thiết kế hệ thống quản lí phòng trọ, HAY
Đè tài: Phân tích thiết kế hệ thống quản lí phòng trọ, HAYĐè tài: Phân tích thiết kế hệ thống quản lí phòng trọ, HAY
Đè tài: Phân tích thiết kế hệ thống quản lí phòng trọ, HAY
 
Xây dựng Website bán hàng giày dép qua mạng.doc
Xây dựng Website bán hàng giày dép qua mạng.docXây dựng Website bán hàng giày dép qua mạng.doc
Xây dựng Website bán hàng giày dép qua mạng.doc
 
Multimedia
MultimediaMultimedia
Multimedia
 
Quy tắc thiết kế giao diện và viết code C#
Quy tắc thiết kế giao diện và viết code C#Quy tắc thiết kế giao diện và viết code C#
Quy tắc thiết kế giao diện và viết code C#
 
Chuong4 uni
Chuong4 uniChuong4 uni
Chuong4 uni
 
Thiết kế mạng LAN cho công ty 2 tầng
Thiết kế mạng LAN cho công ty 2 tầng Thiết kế mạng LAN cho công ty 2 tầng
Thiết kế mạng LAN cho công ty 2 tầng
 
Do an xay_dung_website_thuong_mai_dien_tu
Do an xay_dung_website_thuong_mai_dien_tuDo an xay_dung_website_thuong_mai_dien_tu
Do an xay_dung_website_thuong_mai_dien_tu
 
Đề tài: Xây dựng website bán hàng trực tuyến, HAY
Đề tài: Xây dựng website bán hàng trực tuyến, HAYĐề tài: Xây dựng website bán hàng trực tuyến, HAY
Đề tài: Xây dựng website bán hàng trực tuyến, HAY
 
Báo Cáo Cuối Ký Thực Tập Tốt Nghiệp Xậy Dựng Web Bán Hàng Trực Tuyến bằng Ope...
Báo Cáo Cuối Ký Thực Tập Tốt Nghiệp Xậy Dựng Web Bán Hàng Trực Tuyến bằng Ope...Báo Cáo Cuối Ký Thực Tập Tốt Nghiệp Xậy Dựng Web Bán Hàng Trực Tuyến bằng Ope...
Báo Cáo Cuối Ký Thực Tập Tốt Nghiệp Xậy Dựng Web Bán Hàng Trực Tuyến bằng Ope...
 
Giáo trình mạng máy tính
Giáo trình mạng máy tínhGiáo trình mạng máy tính
Giáo trình mạng máy tính
 
Hệ điều hành (chương 2)
Hệ điều hành (chương 2)Hệ điều hành (chương 2)
Hệ điều hành (chương 2)
 
Báo cáo đồ án - Thiết kế web tại Thanh Hóa
Báo cáo đồ án - Thiết kế web tại Thanh HóaBáo cáo đồ án - Thiết kế web tại Thanh Hóa
Báo cáo đồ án - Thiết kế web tại Thanh Hóa
 
Xây dựng biểu đồ use case
Xây dựng biểu đồ use caseXây dựng biểu đồ use case
Xây dựng biểu đồ use case
 
Bao cao powerpoint
Bao cao powerpointBao cao powerpoint
Bao cao powerpoint
 

Semelhante a Bao cao do an ltm hoan chinh

chuong 1 - Tong quan ve Lap trinh mang.ppt
chuong 1 - Tong quan ve Lap trinh mang.pptchuong 1 - Tong quan ve Lap trinh mang.ppt
chuong 1 - Tong quan ve Lap trinh mang.pptkhamgo1191
 
Bai 4 lap trình phia client
Bai 4  lap trình phia clientBai 4  lap trình phia client
Bai 4 lap trình phia clientLee Nam Nguyen
 
bctntlvn (50).pdf
bctntlvn (50).pdfbctntlvn (50).pdf
bctntlvn (50).pdfLuanvan84
 
Videoconferencereport
VideoconferencereportVideoconferencereport
Videoconferencereporttuanle1984
 
B tl internet
B tl internetB tl internet
B tl internettoan
 
Bai tap lap trinh mang(1)
Bai tap lap trinh mang(1)Bai tap lap trinh mang(1)
Bai tap lap trinh mang(1)Linh Nguyen
 
Web Architecture
Web ArchitectureWeb Architecture
Web ArchitectureHiep Luong
 
Ex 1 chapter03-appliation-layer-tony_chen - tieng viet
Ex 1 chapter03-appliation-layer-tony_chen - tieng vietEx 1 chapter03-appliation-layer-tony_chen - tieng viet
Ex 1 chapter03-appliation-layer-tony_chen - tieng vietĐô GiẢn
 
De cuongthuchanhct221 hk2_1920_n1
De cuongthuchanhct221 hk2_1920_n1De cuongthuchanhct221 hk2_1920_n1
De cuongthuchanhct221 hk2_1920_n1Nahudi Nguyễn
 
Đề tài tìm hiểu WCF
Đề tài tìm hiểu WCFĐề tài tìm hiểu WCF
Đề tài tìm hiểu WCFTỏi Lý Sơn
 
C10 - Routing Remote Access -2020.pdf
C10 - Routing Remote Access -2020.pdfC10 - Routing Remote Access -2020.pdf
C10 - Routing Remote Access -2020.pdfTrnMinhT9
 
[Báo cáo] Bài tập lớn Cơ sở truyền số liệu
[Báo cáo] Bài tập lớn Cơ sở truyền số liệu[Báo cáo] Bài tập lớn Cơ sở truyền số liệu
[Báo cáo] Bài tập lớn Cơ sở truyền số liệuThe Nguyen Manh
 
Business process excution language
Business process excution languageBusiness process excution language
Business process excution languageNguyen Tran
 

Semelhante a Bao cao do an ltm hoan chinh (20)

chuong 1 - Tong quan ve Lap trinh mang.ppt
chuong 1 - Tong quan ve Lap trinh mang.pptchuong 1 - Tong quan ve Lap trinh mang.ppt
chuong 1 - Tong quan ve Lap trinh mang.ppt
 
Bai 4 lap trình phia client
Bai 4  lap trình phia clientBai 4  lap trình phia client
Bai 4 lap trình phia client
 
bctntlvn (50).pdf
bctntlvn (50).pdfbctntlvn (50).pdf
bctntlvn (50).pdf
 
Videoconferencereport
VideoconferencereportVideoconferencereport
Videoconferencereport
 
B tl internet
B tl internetB tl internet
B tl internet
 
Bai tap lap trinh mang(1)
Bai tap lap trinh mang(1)Bai tap lap trinh mang(1)
Bai tap lap trinh mang(1)
 
Bt th lt phan tan
Bt th lt phan tanBt th lt phan tan
Bt th lt phan tan
 
File
FileFile
File
 
Web Architecture
Web ArchitectureWeb Architecture
Web Architecture
 
Giới thiệu WCF
Giới thiệu WCFGiới thiệu WCF
Giới thiệu WCF
 
Luận văn: Tích hợp dịch vụ nghiệp vụ ngân hàng theo mô hình soa
Luận văn: Tích hợp dịch vụ nghiệp vụ ngân hàng theo mô hình soaLuận văn: Tích hợp dịch vụ nghiệp vụ ngân hàng theo mô hình soa
Luận văn: Tích hợp dịch vụ nghiệp vụ ngân hàng theo mô hình soa
 
Ex 1 chapter03-appliation-layer-tony_chen - tieng viet
Ex 1 chapter03-appliation-layer-tony_chen - tieng vietEx 1 chapter03-appliation-layer-tony_chen - tieng viet
Ex 1 chapter03-appliation-layer-tony_chen - tieng viet
 
De cuongthuchanhct221 hk2_1920_n1
De cuongthuchanhct221 hk2_1920_n1De cuongthuchanhct221 hk2_1920_n1
De cuongthuchanhct221 hk2_1920_n1
 
Chương 2.pdf
Chương 2.pdfChương 2.pdf
Chương 2.pdf
 
Đề tài tìm hiểu WCF
Đề tài tìm hiểu WCFĐề tài tìm hiểu WCF
Đề tài tìm hiểu WCF
 
Web service
Web serviceWeb service
Web service
 
Báo cáo tuần 6
Báo cáo tuần 6Báo cáo tuần 6
Báo cáo tuần 6
 
C10 - Routing Remote Access -2020.pdf
C10 - Routing Remote Access -2020.pdfC10 - Routing Remote Access -2020.pdf
C10 - Routing Remote Access -2020.pdf
 
[Báo cáo] Bài tập lớn Cơ sở truyền số liệu
[Báo cáo] Bài tập lớn Cơ sở truyền số liệu[Báo cáo] Bài tập lớn Cơ sở truyền số liệu
[Báo cáo] Bài tập lớn Cơ sở truyền số liệu
 
Business process excution language
Business process excution languageBusiness process excution language
Business process excution language
 

Bao cao do an ltm hoan chinh

  • 1. MỤC LỤC TỔNG QUAN VỀ ĐỀ TÀI
  • 2. Xây d ng ch ng trình “Đi u khi n t xa” v i mô hình Client-Serverự ươ ề ể ừ ớ Giới thiệu đề tài Xây dựng chương trình “Điều khiển từ xa”. Chương trình Client : cho phép server truy cập tới và thực hiên các chức năng điều khiển. Chương trình Server: Gởi thông điệp đến máy client. Truyền và nhận file với máy client. Chụp màn hình với máy client. Theo dõi màn hình với máy client. 2. 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ối Client- Serve, 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. Trang | 2 SVTH: Nguyễn Thị Mỹ Linh –Hồ Thị Ngọc Ánh
  • 3. Xây dựng chương trình “Điều khiển từ xa” theo mô hình Client-Server Chương 1. CƠ SỞ LÝ THUYẾT Giới thiệu mô hình ứng dụng Client-Server 1.1. Kiến trúc Client-Server Tổng Quan Trang | 3 GVHD: Phạm Minh Tuấn
  • 4. Xây d ng ch ng trình “Đi u khi n t xa” v i mô hình Client-Serverự ươ ề ể ừ ớ Kiến trúc Client-Server được sử dụng trong các hệ thống phân tán và bao gồm hai thành phần riêng biệt: Server đóng vai trò phục vụ cung cấp chức năng và Client đóng vai trò người tiêu thụ sử dụng các chức năng đó. Thông thường hai thành phần này kết nối với nhau qua mạng, với Client là bên chủ động tạo kết nối và gửi yêu cầu đến Server, trong khi Server thụ động lắng nghe và hồi đắp các yêu cầu đó. Mô hình Client-Server đơn giản nhất gồm một Server phục vụ cho một hoặc nhiều Client đồng thời, còn gọi là kiến trúc hai lớp (2-Tier). Một ví dụ phổ biến nhất cho các ứng dung Client-Server là các chương trình chat và email đá quá thông dụng hiện nay. Hình 1. Mô hình Client-Server. 1.1. 2. Các ưu điểm của kiến trúc Client-Server Quản lý tập trung: dữ liệu được lưu trữ tập trung trên Server thay vì nằm rải rác trênnhiều máy, giúp đơn giản hóa việc truy xuất và cập nhật dữ liệu. Trang | 4 SVTH: Nguyễn Thị Mỹ Linh –Hồ Thị Ngọc Ánh
  • 5. Xây dựng chương trình “Điều khiển từ xa” theo mô hình Client-Server Dễ bảo trì: nhờ khả năng quản lý tập trung mà công việc bảo trì cũng trở nên nhẹ nhàng hơn vì phần lớn việc bảo trì chỉ cần thực hiện trên Server. Trong trường hợp hệ thống có nhiều Server với thiết bị dự phòng, quá trình bảo trì (như sửa chữa, thay thế Server) có thể diễn ra hoàn toàn trong suốt với phía Client. Bảo mật dữ liệu tập trung trên Server đồng nghĩa với việc kiểm soát dễ dàng hơn. Hình 2 . Mô hình hệ thống Email theo cấu trúc Client-Server. 1.2. Ứng dụng theo mô hình Client-Server 1.2. 3. Cách hoạt động Các tiến trình Clients và Servers có thể chạy cùng một trạm (host) hoặc các trạm khác nhau và là các đối tượng logic tách biệt và liên lạc với nhau qua mạng để cùng thực hiện một công việc. Trong đó: Server: quản lý nguồn tài nguyên, nhận request từ Clients để cung cấp và phân phối tài nguyên cho Clients. Trang | 5 GVHD: Phạm Minh Tuấn
  • 6. Xây d ng ch ng trình “Đi u khi n t xa” v i mô hình Client-Serverự ươ ề ể ừ ớ Client: là chương trình giao tiếp với người sử dụng, có nhiệm vụ gửi request cho Server và thể hiện việc tiếp nhận tài nguyên đó. Client: Khởi tạo liên lạc với Server trước. Yêu cầu dịch vụ nào đó từ Server. Server: Chấp nhận yêu cầu và tạo kết nối với Client. Tính toán rồi cung cấp dịch vụ theo yêu cầu từ Client Hình 3. Cách hoạt động của mô hình Client-Server. 1.2. 3. Đặc trưng của mô hình ứng dụng Client-Server Hoạt động theo kiểu giao thức bất đối xứng Thể hiện quan hệ một chiều giữa các Client và một Server. Client bắt đầu phiên hội thoại bằng cách yêu cầu dịch vụ Server sẵn sang chờ các yêu cầu từ Client. Trang | 6 SVTH: Nguyễn Thị Mỹ Linh –Hồ Thị Ngọc Ánh
  • 7. Xây dựng chương trình “Điều khiển từ xa” theo mô hình Client-Server Hình 4. Giao thức hoạt động bất đối xứng của các tiến trình Client-Server. Chia sẻ tài nguyên: Một Server có thể chia sẻ tài nguyên cho nhiều Client cùng một lúc. Server cũng có khả năng điều phối truy nhập các Client đến các tài nguyên dùn chung. Lập trình với giao thức TCP, Multi-threading 2.1. Tổng quan Trong mô hình ứng dụng Client-Server, thông thường, các chương trình chạy trên máy Client sẽ gửi requests tới một chương trình (thường được gọi là chương trình Server) đang chạy trên máy Server. Các gói request này bao gồm các dịch vụ mạng được cung cấp bởi tầng lớp giao vận (transport layer), là một phần của kiến trúc phân tầng mạng, thường được gọi là TCP/IP (Transport Control Protocol/Internet Protocol). Tầng giao vận bao gồm hai loại giao thức là TCP và UDP(User Datagram Protocol) Trang | 7 GVHD: Phạm Minh Tuấn
  • 8. Xây d ng ch ng trình “Đi u khi n t xa” v i mô hình Client-Serverự ươ ề ể ừ ớ Hình 5. Tầng vận chuyển Transport với TCP/IP. TCP là một giao thức truyền hướng đối tượng được thực hiện bởi một luồng dữ liệu tin cậy giữa hai máy tính khi có thiết lập kết nối. Ví dụ những ứng dụng được sử dụng những dịch vụ như HTTP, FTP và Telnet. 2. 2. IP, Cổng Port và Socket Mọi máy tính trong môi trường Internet đều được xác định bởi địa chỉ IP 4-byte mà được viết dạng chấm như 128.250.25.158, trong đó mỗi byte là một giá trị không dấu từ 0 đến 255. Nhưng cách đặt tên cho địa chỉ như vậy thì không thân thiện bởi vì nó chẳng nói lên được bất cứ điều gì về nội dung và thật khó để nhớ những dãy byte đó. Do đó, địa chỉ IP được xác định bởi những cái tên như www.google.com.vn để cho dễ nhớ. Trang | 8 SVTH: Nguyễn Thị Mỹ Linh –Hồ Thị Ngọc Ánh
  • 9. Xây dựng chương trình “Điều khiển từ xa” theo mô hình Client-Server Hình 6. Ánh xạ tên miền Thông thường, mỗi máy tính chỉ có một địa chỉ IP. Tuy nhiên, các máy tính thường cần kết nối và cung cấp hơn một loại kiểu dịch vụ hoặc để thông báo cho nhiều máychủ/máy tính cùng thời điểm. Ví dụ, trong một máy tính đang làm việc, có thể có nhiều phiên ftp, các kết nối web, và các chương trình chat và tất cả chương trình này cùng chạy một thời điểm. Vậy đển phân biệt các dịch vụ này, ta có khái niệm về cổng (port), là một điểm truy cập logic được biểu diễn bởi một số nguyên 16-bit gắn cho mỗi tiến trình mạng. Và mỗi tiến trình mạng đều được gắn một cổng duy nhất. Hình 7. Biểu đồ các gói tin được gắn bởi một cổng nhất định. Trang | 9 GVHD: Phạm Minh Tuấn
  • 10. Xây d ng ch ng trình “Đi u khi n t xa” v i mô hình Client-Serverự ươ ề ể ừ ớ Một socket là một đầu cuối của một sự truyền thông hai chiều, liên kết giữa hai chương trình chạy trên mạng. Một socket được gắn với một số hiệu cổng (port), vì thế tầng giao vận có thể nhận biết ứng dụng mà dữ liệu được chuyển đến. Socket cho phép thực hiện các hoạt động sau: Kết nối đến máy ở xa Gửi dữ liệu Nhận dữ liệu Đóng kết nối Gắn với một cổng Lắng nghe dữ liệu đến Chấp nhận kết nối từ máy ở xa trên cổng đã được gắn. Một (chương trình) server chạy trên một máy tính cụ thể và có một socket được gắn bởi một cổng cụ thể. Chương trình server sẽ lắng nghe socket từ một client để tạo một yêu cầu kết nối. Nếu thành công, chương trình server chấp nhận kết nối. Sau khi chấp nhận kết nối, chương trình server có một socket mới được gắn bởi một cổng khác. Nó cần một socket mới để có thể tiếp tục lắng nghe socket ban đầu cho yêu cầu kết nối trong khi phục vụ cho việc kết nối với client. Trang | 10 SVTH: Nguyễn Thị Mỹ Linh –Hồ Thị Ngọc Ánh
  • 11. Xây dựng chương trình “Điều khiển từ xa” theo mô hình Client-Server Hình 8. Thiết lập đường dẫn cho kết nối hai chiều giữa client và server. 2. 3. Lập trình TCP Socket Có hai lớp của gói java.net được sử dụng để tạo những chương trình server và client: ServerSocket Socket Một chương trình server tạo một socket cụ thể được sử dụng để chờ lắng nghe kết nối từ yêu cầu của client (server socket). Trong một yêu cầu kết nối, chương trình tạo ra một socket mới mà thông qua đó nó sẽ trao đổi dữ liệu với client sử dụng các luồng input và output. Người lập trình phải mở một socket, thực hiên các việc tạo và biểu diễn các luồng I/O, và sau đó là đóng socket. Hình 9. Chương trình client-server có kết nối socket. Các bước tạo một chương trình server đơn giản: Trang | 11 GVHD: Phạm Minh Tuấn
  • 12. Xây d ng ch ng trình “Đi u khi n t xa” v i mô hình Client-Serverự ươ ề ể ừ ớ Mở cổng: ServerSocket server = new ServerSocket(PORT); Chờ kết nối từ Client: Socket client = server.accept(); Tạo các luồng I/O cho sự kết nối với Client DataInputStream dis = new DataInputStream(client.getInputStream()); DataOutputStream dos = new DataOutputStream(client.getOutputStream()); Biểu diễn việc kết nối với Client Nhận từ client: String line = dis.readLine(); Gửi tới client: dos.writeBytes(“Hellon”); Đóng socket client.close(); Các bước tạo một chương trình client đơn giản: Tạo một đối tượng socket Socket client = new Socket(server, port_id); Tạo các luồng I/O cho sự kết nối với server dis = new DataInputStream(client.getInputStream()); dos = new DataOutputStream(client.getOutputStream()); Thực hiện nhận và truyền dữ liệu qua luồng I/O Nhận dữ liệu từ server: String line = dis.readLine(); Trang | 12 SVTH: Nguyễn Thị Mỹ Linh –Hồ Thị Ngọc Ánh
  • 13. Xây dựng chương trình “Điều khiển từ xa” theo mô hình Client-Server Gửi dữ liệu đến server: dos.writeBytes(“Hellon”); Đóng socket khi hoàn thành client.close(); Hình 10. Các bước tạo một ứng dựng TCP. Hai chương trình ví dụ sau sẽ minh họa cơ chế của Server và Client: Chương trình Server: // SimpleServer.java: A simple server program. import java.net.*; Trang | 13 GVHD: Phạm Minh Tuấn
  • 14. Xây d ng ch ng trình “Đi u khi n t xa” v i mô hình Client-Serverự ươ ề ể ừ ớ import java.io.*; public class SimpleServer { public static void main(String args[]) throws IOException { // Register service on port 7000 ServerSocket s = new ServerSocket(7000); Socket s1=s.accept(); // Wait and accept a connection // Get a communication stream associated with the socket OutputStream s1out = s1.getOutputStream(); DataOutputStream dos = new DataOutputStream (s1out); // Send a string! dos.writeUTF(“Hi there”); // Close the connection, but not the server socket dos.close(); s1out.close(); s1.close(); } } Chương trình Client: // SimpleClient.java: A simple client program. Trang | 14 SVTH: Nguyễn Thị Mỹ Linh –Hồ Thị Ngọc Ánh
  • 15. Xây dựng chương trình “Điều khiển từ xa” theo mô hình Client-Server import java.net.*; import java.io.*; public class SimpleClient { public static void main(String args[]) throws IOException { // Open your connection to a server, at port 7000 Socket s1 = new Socket(“localhost”,7000); // Get an input file handle from the socket and read the input InputStream s1In = s1.getInputStream(); DataInputStream dis = new DataInputStream(s1In); String st = new String (dis.readUTF()); System.out.println(st); // When done, just close the connection and exit dis.close(); s1In.close(); s1.close(); } } 2. 4. Lập trình với chương trình server đa tuyến (ThreadServer) Để cho phép nhiều client có thể kết nối đến server thì server phải là chương trình đa tuyến. Mối tuyến (thread) đảm nhận việc liên lạc với client. Nghĩa là khi có một client kết nối đến, chương trình server sinh ra một tuyến (thread) để điều khiển việc truyền thông với client. Trang | 15 GVHD: Phạm Minh Tuấn
  • 16. Xây d ng ch ng trình “Đi u khi n t xa” v i mô hình Client-Serverự ươ ề ể ừ ớ Các bước tạo chương trình đa server đa tuyến Tạo một lớp extends đến lớp Thread và ghi đè lên phương thức run(): class MyThread extends Thread { public void run() { // Nơi thực thi } } Tạo một đối tượng thread: MyThread thr1 = new MyThread(); Bắt đầu thực thi lớp Thread đã được tạo: thr1.start(); Một chương trình ví dụ minh họa việc tạo và gọi một đối tượng thread: extending the standard Thread class. */ class MyThread extends Thread { public void run() { System.out.println(“ this thread is running ... ”); } } class ThreadEx1 { public static void main(String [] args ) { Trang | 16 SVTH: Nguyễn Thị Mỹ Linh –Hồ Thị Ngọc Ánh
  • 17. Xây dựng chương trình “Điều khiển từ xa” theo mô hình Client-Server MyThread t = new MyThread(); t.start(); } } 3. Lập trình với JAVA 3.1. Giới thiệu khái quát ngôn ngữ Java Java (đọc như “Gia-va”) 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 nhanh hơn những ngôn ngữ lập trình thông dịch khác như Python, Perl, PHP,… Cú pháp Java được vay mượn nhiều từ C & C++ nhưng có cú pháp hướng đối tượng đơn giản hơn và ít tính năng xử lý cấp thấp hơn. 3. 2. Một số đặt điểm nổi bật của ngôn ngữ lập trình Java 3.2.1. Máy ảo Java (JVM – Java Virtual Machine) Tất cả các chương trình muốn thực thi được thì phải được biên dịch ra mã máy.Mã máy của từng kiến trúc CPU của mỗi máy tính là khác nhau (tập lệnh mã máy của CPU Intel, CPU Solarix, CPU Macintosh … là khác nhau), vì vậy trước đây một chương trình sau khi được biên dịch xong chỉ có thể chạy được trên một kiến trúc CPU cụ thể nào đó. Đối với CPU Intel chúng ta có thể chạy các hệ điều hành như Microsoft Windows, Unix, Linux, OS/2, … Trang | 17 GVHD: Phạm Minh Tuấn
  • 18. Xây d ng ch ng trình “Đi u khi n t xa” v i mô hình Client-Serverự ươ ề ể ừ ớ Chương trình thực thi được trên Windows được biên dịch dưới dạng file có đuôi .EXE còn trên Linux thì được biên dịch dưới dạng file có đuôi .ELF, vì vậy trước đây một chương trình chạy được trên Windows muốn chạy được trên hệ điều hành khác như Linux chẳng hạn thì phải chỉnh sửa và biên dịch lại. Ngôn ngữ lập trình Java ra đời, nhờ vào máy ảo Java mà khó khăn nêu trên đã được khắc phục. Một chương trình viết bằng ngôn ngữ lập trình Java sẽ được biên dịch ra mã của máy ảo java (mã java bytecode). Sau đó máy ảo Java chịu trách nhiệm chuyển mã java bytecode thành mã máy tương ứng.Sun Microsystem chịu trách nhiệm phát triển các máy ảo Java chạy trên các hệ điều hành trên các kiến trúc CPU khác nhau. Thông dịch: Java là một ngôn ngữ lập trình vừa biên dịch vừa thông dịch. Chương trình nguồn viết bằng ngôn ngữ lập trình Java có đuôi *.java đầu tiên được biên dịch thành tập tin có đuôi *.class và sau đó sẽ được trình thông dịch thông dịch thành mã máy. Độc lập nền: Một chương trình viết bằng ngôn ngữ Java có thể chạy trên nhiều máy tính có hệ điều hành khác nhau (Windows, Unix, Linux, …) miễn sao ở đó có cài đặt máy ảo java (Java Virtual Machine). Viết một lần chạy mọi nơi (write once run anywhere). Hướng đối tượng: Hướng đối tượng trong Java tương tự như C++ nhưng Java là một ngôn ngữ lập trình hướng đối tượng hoàn toàn. Tất cả mọi thứ đề cập đến trong Java đều liên quan đến các đối tượng được định nghĩa trước, thậm chí hàm chính của một chương trình viết bằng Java (đó là hàm main) cũng phải đặt bên trong một lớp. Hướng đối tượng trong Java không có tính đa kế thừa (multi inheritance) như trong C++ mà thay vào đó Java đưa ra khái niệm interface để hỗ trợ tính đa kế thừa. Vấn đề này sẽ được bàn chi tiết trong phần sau. Trang | 18 SVTH: Nguyễn Thị Mỹ Linh –Hồ Thị Ngọc Ánh
  • 19. Xây dựng chương trình “Điều khiển từ xa” theo mô hình Client-Server Đa nhiệm – đa luồng (MultiTasking – Multithreading): Java hỗ trợ lập trình đa nhiệm, đa luồng cho phép nhiều tiến trình, tiểu trình có thể chạy song song cùng một thời điểm và tương tác với nhau. Khả chuyển (portable): Chương trình ứng dụng viết bằng ngôn ngữ Java chỉ cần chạy được trên máy ảo Java là có thể chạy được trên bất kỳ máy tính, hệ điều hành nào có máy ảo Java. “Viết một lần, chạy mọi nơi” (Write Once, Run Anywhere). Hỗ trợ mạnh cho việc phát triển ứng dụng: Công nghệ Java phát triển mạnh mẽ nhờ vào “đại gia Sun Microsystem” cung cấp nhiều công cụ, thư viện lập trình phong phú hỗ trợ cho việc phát triển nhiều loại hình ứng dụng khác nhau cụ thể như: J2SE (Java 2 Standard Edition) hỗ trợ phát triển những ứng dụng đơn, ứng dụng client-server; J2EE (Java 2 Enterprise Edition) hỗ trợ phát triển các ứng dụng thương mại, J2ME (Java 2 Micro Edition) hỗ trợ phát triển các ứng dụng trên các thiết bị di động, không dây, … Trang | 19 GVHD: Phạm Minh Tuấn
  • 20. Xây d ng ch ng trình “Đi u khi n t xa” v i mô hình Client-Serverự ươ ề ể ừ ớ Chương 1. THIẾT KẾ VÀ XÂY DỰNG CHƯƠNG TRÌNH 2.1. Phân tích yêu cầu Trang | 20 SVTH: Nguyễn Thị Mỹ Linh –Hồ Thị Ngọc Ánh
  • 21. Xây dựng chương trình “Điều khiển từ xa” theo mô hình Client-Server Đề tài xây dựng chương trình “Điều Khiển Từ Xa”: Chương trình có 3 bước thực hiện để truy cập tới máy Client: Xây dựng chương trình Điều Khiển Từ Xa Chương trình Client : cho phép server truy cập tới và thực hiên các chức năng điều khiển. Chương trình Server: - Gởi thông điệp đến mấy client. - Truyền và nhận file với máy client. - Chụp màn hình với máy client. - Theo dõi màn hình với máy client. Client hiển thị giao diện dễ sử dụng cho người sử dụng. Client kết nối với Server thông qua giao thức TCP/IP và UDP để truyền file qua cho nhau . Server mở cổng kết nối với các Client, nhận yêu cầu từ phía Client, thực hiện việc Remote tới Client , lấy thông tin cần thiết và gửi trả cho Server. 2.2. Phân tích các chức năng Chương trình được viết theo mô hình Client-Server.Ở Client và Server sẽ thực hiện các chức năng khác nhau để cùng tạo nên một chương trình hoàn chỉnh. Client có chức năng: cho phép kết nối tới Server. Server có chức năng: - Gởi thông điệp đến mấy client. - Truyền và nhận file với máy client. - Chụp màn hình với máy client. Trang | 21 GVHD: Phạm Minh Tuấn
  • 22. Xây d ng ch ng trình “Đi u khi n t xa” v i mô hình Client-Serverự ươ ề ể ừ ớ - Theo dõi màn hình với máy client. Mô hình tổng quát của chương trình được mô tả theo sơ đồ sau: Hình 11: mô hình tổng quát chương trình Mô tả cách thức hoạt động: 1: Client gửi yêu cầu tới Server. 2: Server tiếp nhận yêu cầu kết nối từ Client, tất cả các dữ liệu giữa client và server sẽ được kết nối thông với nhau. 3: Trao đổi dữ liệu giữa client tới server, từ đây server và client gởi dữ liệu xuyên suốt với nhau. 3.1. Xây dựng các chức năng Client: chương trình tại Client được xây dựng thành 3 lớp Mô tả chương trình Client: 1: Client gửi yêu cầu tới Server. 2: Client nhận kết nối từ Server và lấy được màn hình từ Client. Trang | 22 SVTH: Nguyễn Thị Mỹ Linh –Hồ Thị Ngọc Ánh
  • 23. Xây dựng chương trình “Điều khiển từ xa” theo mô hình Client-Server 3: Client gửi dữ liệu xuyên suốt cho Server. Server: chương trình Server được xây dựng dựa trên 2 lớp: Mô tả chương trình Server: 1: Tiếp nhận yêu cầu kết nối từ Client. 2: Tạo Thread cho mỗi Client kết nối. 3: Thread kết nối để lấy dữ liệu theo yêu cầu Client. 4: ThreadClient nhận dữ liệu từ ThreadServer. 5: Gửi trả về cho Client. 6: Tiếp nhận dữ liệu từ Client. Lớp chính: chịu trách nhiệm mở và chấp nhận kết nối từ phía Client, sau đó sẽ gọi tới lớp Thread , mỗi Thread chịu trách nhiệm trao đổi với 1 Client, với port kể từ khi được tạo ra tới khi Client đóng kết nối. Lớp chính chứa các phương thức tách dữ liệu được lấy từ Client về. Lớp Thread: sẽ chịu trách nhiệm làm việc với Client kể từ sau khi Server đã chấp nhận kết nối. Lớp này gọi các phương thức trong lớp chính để giao tiếp với Client. Trang | 23 GVHD: Phạm Minh Tuấn
  • 24. Xây d ng ch ng trình “Đi u khi n t xa” v i mô hình Client-Serverự ươ ề ể ừ ớ Chương 2 KẾT LUẬN VÀ HUỚNG PHÁT TRIỂN 3.1. Kết quả chạy chương trình Hình 12: Khởi động Server Trang | 24 SVTH: Nguyễn Thị Mỹ Linh –Hồ Thị Ngọc Ánh
  • 25. Xây dựng chương trình “Điều khiển từ xa” theo mô hình Client-Server Hình 13: Khởi động Client 3.2. Đánh giá và nhận xét: Trong khuôn khổ đề tài chúng em đã cơ bản làm rõ một số vấn đề cơ bản liên quan đến môn học Lập Trình Mạng, và đã xây dựng thành công một chương trình demo nhằm làm rõ các vấn đề lí thuyết. Đồ án đã đạt được một số kết quả như sau : Tìm hiểu được cách xây dựng một chương trình với giao thức TCP/IP theo mô hình client – server. Tìm hiểu được các khái niệm cơ bản về lập trình mạng, phân tầng mạng, cách lấy dữ liệu từ máy client…. Ứng dụng Socket và đa luồng trong ngôn ngữ Java để xây dựng một chương trình theo mô hình client – server. Tuy nhiên về mặt ứng dụng đồ án vẫn còn rất nhiều điểm hạn chế như chương trình vẫn chưa thực sự hoàn thiện để có thể trở thành sản phẩm thương mại. Bên cạnh đó việc quản lí nhóm, quản lí mã nguồn vẫn còn diễn ra rất thủ công chưa thực sự áp dụng đúng quy trình của công nghệ phần mềm. Tuy vậy chúng em xin kết thúc đồ án lập trình mạng với đề tài “xây dựng chương trình Điều Khiển Từ Xa theo mô hình client – server” tại đây. Chúng em cũng xin được cảm ơn sự hướng dẫn và giúp đỡ tận tình của thầy “Phạm Minh Tuấn” trong suốt quá trình thực hiện đề tài. 3.2. Hướng phát triển Về cơ bản, nghiên cứu đã đạt được những yêu cầu đã đặt ra. Tuy nhên nếu có điều kiện, đồ án sẽ cố gắng phát triển thêm các chức năng sau: Trang | 25 GVHD: Phạm Minh Tuấn
  • 26. Xây d ng ch ng trình “Đi u khi n t xa” v i mô hình Client-Serverự ươ ề ể ừ ớ Truyền âm thanh giữa Client-Server TÀI LIỆU THAM KHẢO Trang | 26 SVTH: Nguyễn Thị Mỹ Linh –Hồ Thị Ngọc Ánh
  • 27. Xây dựng chương trình “Điều khiển từ xa” theo mô hình Client-Server [1] TS.Huỳnh Công Pháp, Giáo trình lập trình mạng(2004- 2006), Đại Học Đà Nẵng [2] http://diendan.congdongcviet.com/showthread.php?t=161040 Trang | 27 GVHD: Phạm Minh Tuấn