Tải bản đầy đủ (.docx) (20 trang)

Tiểu luận lập trình mạng Xây dựng chương trình tư vấn tuyển sinh sử dụng socket.io

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.12 MB, 20 trang )

TRƯỜNG ĐẠI HỌC QUẢNG NAM
KHOA CÔNG NGHỆ THÔNG TIN
---------Tiểu luận:
HỌC PHẦN LẬP TRÌNH MẠNG

Tên đề tài:
TÌM HIỂU VÀ SỬ DỤNG KỸ THUẬT LẬP TRÌNH SOCKET XÂY DỰNG
CHƯƠNG TRÌNH TƯ VẤN VÀ TUYỂN SINH CAO ĐẲNG, ĐẠI HỌC
THEO MÔ HÌNH CLIENT – SERVER
Giảng viên: ThS. Nguyễn Văn Khương
Nhóm sinh viên thực hiện:
-

Nguyễn Văn Tân

-

Huỳnh Thanh Tùng

-

Hồ Văn Quyền

-

Hồ Thị Hạnh

-

Bùi Thị Xuân Hương
Lớp: DT13CTT02


Quảng Nam, tháng 11 năm 2016


Phần 1. MỞ ĐẦU
1.

LÝ DO CHỌN ĐỀ TÀI
Như chúng ta đã biết, ứng dụng công nghệ thông tin đã là một phần tất yếu
trong thế giới hiện đại này. Do vậy, công nghệ thông tin hiện tại là một ngành khoa học
rất phát triển và cực kỳ quan trọng vì nó được ứng dụng cho hầu hết các ngành quan
trọng khác, có sự ảnh hưởng trực tiếp tới sự phát triển kinh tế của mỗi Quốc gia. Hai lĩnh
vực phổ biến và quan trọng nhất đó là phần cứng và phần mềm.
Trong các ứng dụng về phần mềm, ứng dụng để giúp người sử dụng có thể truy cập từ xa
, truy cập đồng thời cùng lúc và dữ liệu được tập trung , thuận tiện cho việc quản lý cũng
như việc truy cập của tất cả mọi người.
Môn “Lập trình mạng” mà chúng ta được học cũng không nằm ngoài mục đích
đó. Trong môn này, ứng dụng Client-Server là được xem là quan quan trọng trong việc
xây dựng chương trình hoàn chỉnh. Đề tài: “Tìm hiểu và sử dụng kỹ thuật lập trình
Socket xây dựng chương trình tư vấn và tuyển sinh cao đẳng, đại học theo mô hình
Client – Server” cũng thực hiện theo mô hình Client-Server giúp cho người dùng có các
thông tin cơ bản về kì thi. Mục tiêu của đề tài là giúp chúng em vận dụng các kiến thức
đã được học ở môn lập trình mạng để xây dựng ứng dụng hoàn chỉnh.
Tuy nhiên với kiến thức còn nhiều hạn chế nên trong quá trình xây dựng và
hoàn thành đề tài môn học này, chúng em còn mắc phải nhiều thiếu sót, hạn chế do vậy
mong được sự chỉ bảo của thầy cô, cùng các bạn để đề tài được hoàn thiện về nội dung
và hình thức.
Chúng em xin chân thành cảm ơn.

1.



2.


MỤC TIÊU CỦA ĐỀ TÀI
Tìm hiểu về lập trình Socket.
Xây dựng được chương trình tư vấn và tuyển sinh cao đẳng, đại học. Từ đó giúp
các thí sinh chọn đúng trường, ngành nghề phù hợp với khả năng của mình.

ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU
Đối tượng nghiên cứu:
Mô hình Client – Server.



Phạm vi nghiên cứu:
Nghiên cứu các vấn đề xoay quanh việc lập trình Socket.Từ đó xây dựng xây dựng
chương trình tư vấn và tuyển sinh cao đẳng, đại học theo mô hình Client – Server.


3.

PHƯƠNG PHÁP NGHIÊN CỨU
Thu thập thông tin, nghiên cứu tài liệu liên quan đến đề tài.
Tham khảo sách, bài giảng và từ Internet.


Phần 2. NỘI DUNG NGHIÊN CỨU
Chương 1: CƠ SỞ LÝ THUYẾT
1.1.

1.1.1
1.1.1.1

MÔ HÌNH CLIENT – SERVER
Kiến trúc Client – Server
Tổng quan
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. Một ví dụ phổ biến nhất cho các ứng
dụng 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.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ên nhiều máy, giúp đơn giản hóa việc truy xuất và cập nhật dữ liệu.

• 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.1.2

Ứng dụng theo mô hình Client – Server

1.1.2.1

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.

• 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.1.2.2

Đặ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.

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ùng
chung.

1.2. LẬP TRÌNH VỚI GIAO THỨC TCP, MULTI THREADING
1.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)


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.
1.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 4byte 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ớ.

Hình 6. Ánh xạ 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.

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.

Hình 8. Thiết lập đường dẫn cho kết nối hai chiều giữa client và server.
1.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:
-

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(“Hello\n”);

-

Đó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();
Gửi dữ liệu đến server: dos.writeBytes(“Hello\n”);
Đóng socket khi hoàn thành
client.close();

Hình 10. Các bước tạo một ứng dựng TCP.
1.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.
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 ) {
MyThread t = new MyThread();
t.start();
}
}

1.3. LẬP TRÌNH VỚI PHP
Bất cứ ai khi thiết kế những trang Web đều nhận thấy rằng những hạn chế của
ngôn ngữ HTML và ngôn ngữ lập trình khác như CSS và Javacript. Trong khi các ngôn
ngữ này vẫn duy trì những điểm cốt lõi để phát triển Web theo chức năng quan trọng là
xử lí văn bản cũng được giới hạn.
PHP (Hypertext Preprocessor) là ngôn ngữ lập trình được kết nối chặt chẽ với

máy chủ (Windows hoặc Unix). Khi một trang Web muốn dựng PHP thì phải đáp ứng
được tất cả các quá trình 1xử lí thông tin trong trang Web đó, sau đó đưa ra kết quả như
ngôn ngữ HTML. Về quá trình xữ lí này diễn ra trên máy chủ nên trang Web được viết
bằng PHP sẽ dễ nhận hơn bất cứ hệ điều hành nào.
Cũng như hầu hết các ngôn ngữ khác, PHP có thể nối trực tiếp với HTML. Khi
một tài liệu đưa ra phân tích quá trình xử lí cũng được thực hiện ở những điểm quan
trọng rồi sau đó đưa ra kết quả.
PHP là một ngôn ngữ lập trình có cấu trúc và tính năng đa dạng. Chính với
những điểm giống nhau này đã khuyến khích những nhà thiết kế Web chuyển qua sử
dụng PHP. Với phiên bản này PHP cung cấp một số lượng cơ sở dữ liệu khá đồ sộ gồm


cả MySQL, mSQL, OPBC và Oracle. Nó có thể làm việc với các hình ảnh các file dữ
liệu, FTP, XML và Host của các kỹ thuật ứng dụng khác.
PHP có thể chạy trên Windows NT/2000/2003 và Unix với sự hỗ trợ của IIS và
Apache, ngoài ra nó có thể chạy trên một số Flatform khác.
PHP cung cấp các tính năng mạnh mẽ để thực hiện ứng dụng Web một cách
nhanh chóng. Hơn nữa bạn không phải ngại tới vấn đề bản quyền khi bạn sắm một máy
vi tính và cài lên thì những phần mềm Apache, PHP tất cả đểu miễn phí.

Chương 2: PHÂN TÍCH THIẾT KẾ CHƯƠNG TRÌNH
2.1. PHÂN TÍCH YÊU CẦU
Đề tài xây dựng chương trình “xây dựng chương trình tư vấn và tuyển sinh
cao đẳng, đại học theo mô hình Client – Server”:


2.1.1 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.
- Nhập tin nhắn từ bàn phím.
- Gửi tin tới server.

- Hiển thị tin từ server gửi đến.
2.1.2 Chương trình Server:
- Lắng nghe và chấp nhận kết nối.
- Truyền và nhận dữ liệu với máy client.
- Cho phép kết nối nhiều Client trong cùng một lúc.
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 dữ liệu 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:
-

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.


Chương 3: XÂY DỰNG CHƯƠNG TRÌNH
3.1.

XÂY DỰNG CÁC CHỨC NĂNG
Mô tả chương trình Client:
Client gửi dữ liệu xuyên suốt cho Server.


Mô tả chương trình Server:
1: Tạo Thread cho mỗi Client kết nối.
2: Thread kết nối để lấy dữ liệu theo yêu cầu Client.
3: ThreadClient nhận dữ liệu từ ThreadServer.
4: Gửi trả về cho Client.
5: Tiếp nhận dữ liệu từ Client.
3.2.

KẾT QUẢ CHẠY CHƯƠNG TRÌNH
Trang chủ:

Trang đăng ký User để chat với nhân viên


Giao diện admin chat:

Giao diện khách hàng chat


P
hần 3. KẾT LUẬN

1.

NHỮNG VẤN ĐỀ ĐẠT ĐƯỢC
Trong khuôn khổ đề tài, chúng em đã cơ bản làm rõ một số vấ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. Đề tài đã đạt được kết quả là :
Tìm hiểu được cách xây dựng một chương trình với lập trình Socket theo mô hình client

– server, xây dựng chương trình tư vấn và tuyển sinh cao đẳng, đại học

2.

NHỮNG VẤN ĐỀ CÒN HẠN CHẾ
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
đề tài lập trình mạng với đề tài “Tìm hiểu và sử dụng kỹ thuật lập trình Socket xây
dựng chương trình tư vấn và tuyển sinh cao đẳng, đại học 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 “Nguyễn Văn Khương” trong suốt quá trình thực hiện đề tài.


TÀI LIỆU THAM KHẢO
[1]. ThS. Nguyễn Văn Khương, “Bài giảng Lập trình mạng”, năm 2015.
[2]. Tham khảo từ trang


MỤC LỤC

(Tạo mục lục tự động)


NHẬN XÉT CỦA GIẢNG VIÊN

…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………

…………………………………………………………………………………………




×