Tiểu luận: Lập trình Mạng GVHD:PGS.TS. Lê Văn Sơn
TIỂU LUẬN MÔN HỌC LẬP TRÌNH MẠNG
Đề tài:
LỰA CHỌN ĐỀ THI TỪ XA
GVHD: PGS.TS. Lê Văn Sơn
HVTH: Lê Hồng Dũng
Lê Thị Thu Hà
HVTH: Lê Hồng Dũng – Lê Thị Thu Hà Trang 1
Tiểu luận: Lập trình Mạng GVHD:PGS.TS. Lê Văn Sơn
MỤC LỤC
TIỂU LUẬN MÔN HỌC LẬP TRÌNH MẠNG 1
Đề tài: 1
LỰA CHỌN ĐỀ THI TỪ XA 1
GVHD: PGS.TS. Lê Văn Sơn 1
HVTH: Lê Hồng Dũng 1
Lê Thị Thu Hà 1
MỤC LỤC 2
LỜI MỞ ĐẦU 3
CHƯƠNG 1 4
NGHIÊN CỨU NHỮNG VẤN ĐỀ CƠ BẢN VỀ 4
LẬP TRÌNH JAVA TRÊN MẠNG 4
1.1. Tìm hiểu ngôn ngữ lập trình Java 4
1.2. Liên lạc trên Internet 4
1.2.1. Họ giao thức TCP/IP (Transmision Control Protocol/Internet Protocol) 4
1.2.2. Chuyển dữ liệu trên mạng và giao thức UDP (User Datagram Protocol) 5
1.3. Giao tiếp trên mạng theo mô hình khách/chủ (Client/Server) và khái niệm Socket 5
CHƯƠNG 2 11
BÀI TOÁN “LỰA CHỌN ĐỀ THI TỪ XA” 11
2.1. Mô tả bài toán “Lựa chọn đề thi từ xa” 11
2.2. Phân tích bài toán 11
2.3. Các bước của chương trình 11
++
, …. Mỗi ngôn ngữ đều có các yêu cầu về cấu trúc, văn phạm
riêng và không dễ dàng chúng ta có thể nắm bắt được tất cả.
Java cũng không nằm ngoài “luồng xoáy” của công nghệ thông tin hiện nay. Khi mới ra
đời với phiên bản 1.0 (vào năm 1995) Java đã được coi như một cách tân vĩ đại của thế giới
Tin học. Dù rằng không ít người cho rằng Java là một “Quốc tế ngữ” của Tin học, dễ học, dễ
dùng, nhưng một khi chúng ta đã đến với Java mới khám phá được những nét độc đáo của
nó, đây là một con đường mới mẻ và đẹp đẽ nhưng không ít các khái niệm phức tạp, nhiều
gai góc, dòi hỏi chúng ta vẫn phải làm việc, nghiên cứu nhiều và rất nhiều mới có thể nắm
bắt, khai thác và điều khiển được Java. “Java là một ngôn ngữ đơn giản, hướng đối tượng,
phân tán, thông dịch, mạnh mẽ, bảo mật, cấu trúc độc lập, khả chuyển, hiệu quả cao và linh
động” (The Java
TM
Language: An Overview – Sun Mycrosystems/1995).
Sự hỗ trợ lập trình hướng đối tượng là cốt lõi của java. Mọi hoạt động, mọi câu lệnh của
Java đều phải tác động lên và qua các đối tượng. Mà tượng trưng cho chúng là các lớp
(class). Đối tượng chính là những mẫu của lớp và lớp có thể được xem như một cái khuôn
đúc nên các đối tượng. Do vậy Java đáp ứng khá đầy đủ những công cụ cần thiết cho lập
trình mạng mà đặc biệt là trong hệ tin học phân tán.
1.2. Liên lạc trên Internet.
1.2.1. Họ giao thức TCP/IP (Transmision Control Protocol/Internet Protocol).
Để hai hay nhiều máy tính trao đổi thông tin được với nhau dòi hỏi giữa chúng phải
có một ngôn ngữ chung: Chẳng hạn máy này phải gửi những tín hiệu gì đó đến máy kia và
máy kia phải gửi trả lời lại những tín hiệu nào để nhận biết được với nhau. Trên Internet
ngày nay việc hai hay nhiều máy có thể trao đổi qua lại nhau đa số đều dựa theo quy ước
giao thức cốt lõi là TCP/IP. Theo giao thức này mỗi máy sẽ được đặt cho một địa chỉ (số)
riêng biệt gọi là địa chỉ IP và nó có vai trò tương tự như số điện thoại. Các địa chỉ IP này là
duy nhất ứng với mỗi máy (trên toàn thế giới) và phải được đăng ký với tổ chức quốc tế
InterNIC (Internet Network Information Center) để nhận được một số IP riêng biệt khi tham
gia vào hệ thống Internet.
S
3
S
1
S
4
S
2
Họ giao thức
TCP/IP
Tiểu luận: Lập trình Mạng GVHD:PGS.TS. Lê Văn Sơn
Một khi đã tham gia vào Internet, thông tin từ Internet có thể được truy cập bằng
nhiều hình thức khác nhau, chỉ cần cho biết địa chỉ của máy chủ (nơi mà ta muốn truy cập
thông tin) và loại yêu cầu nếu thỏa mãn thì máy chủ sẽ cung cấp.
Có rất nhiều dịch vụ hỗ trợ trên Internet như e-mail, nhóm tin (newsgroup), chuyển
tập tin (file transfer), đăng nhập từ xa (remote login), truy tìm các trang Web,…. Những dịch
vụ này được tổ chức và kiến trúc đều theo mô hình khách/chủ (Client/Server). Các chương
trình ở máy khách (Client) như trình duyệt (Web browser) hay chương trình gửi nhận e-mail
sẽ tạo ra kết nối (Connection) với một máy chủ (Server) ở xa, sau đó gửi các yêu cầu đến
máy chủ, các chương trình dịch vụ này sẽ gởi kết qủa ngược về cho máy khách và thông
thường một dịch vụ trên máy chủ liên tục phục vụ cho nhiều máy khách khác nhau trong hệ
thống mạng.
Hình 2: Mô hình giao tiếp Client/Server.
Khái niệm Socket:
Theo sự phân tích trên đây đòi hỏi chúng ta muốn lập trình mạng thì phải biết sử dụng
các loại giao thức tuỳ theo yêu cầu đặt ra là hướng có kết nối hay không có kết nối. Trước
khi yêu cầu một dịch vụ trên máy chủ thực hiện điều gì đó máy khách phải có khả năng kết
nối được với máy chủ. Quá trình kết nối này được Java thực hiện thông qua một cơ chế trừu
tượng hóa gọi là Socket (tạm dịch là “cơ chế ổ cắm”). Việc kết nối giữa máy khách và máy
chủ tương tự như việc cắm phích điện vào ổ cắm điện và máy khách được coi như phích cắm
+public static InetAddress [] getAllByName(String host)
Throws unknownHostException
//Trả về địa chỉ IP của đối tượng InetAddress dướ dạng một dãy các file:
+public byte [] getAddress
//Trả về địa chỉ IP của đối tượng InetAddress dưới dạng chuỗi:
+public String getHostAddress()
HVTH: Lê Hồng Dũng – Lê Thị Thu Hà Trang 7
Tiểu luận: Lập trình Mạng GVHD:PGS.TS. Lê Văn Sơn
Lớp Socket:
//Tạo ra một Socket theo địa chỉ host và số cổng port:
+public socket(String host,int port)
Throws unknownHostException, IOException
//Tạo một Socket nối từ địa chỉ là đối tượng InetAddress và số cổng port:
+public socket(InetAddress address, int port)
Throws IOException
//Tạo một Socket nối theo địa chỉ host, số cổng port với tham số stream:
+public Socket(String host, int port, boolean stream)
Throws IOException
//Lấy về luồng nhập để máy khách đọc dữ liệu trả về từ máy chủ:
+InputSteam getInputStream()
Throws IOException
//Lấy về luồng xuất để máy khách ghi dữ liệu gửi đến máy chủ:
+OutputSteam getOutputStream()
Throws IOException
//Lấy địa chỉ kết nối Socket của máy chủ:
+InetAddress getInetAddress()
//Lấy về số cổng dùng kết nối của máy chủ:
+int getport()
//Cắt đức kết nối với máy chủ:
+synchronized void close()
Throws IOException
//đóng kết nối:
+public void synchronized close()
Lớp DatagramPackage:
Lớp DatagramPackage dùng cho một gói chứa dữ liệu chuyển đi trên mạng theo kết
chiều dài gói, các địa chỉ IP và số cổng mà từ đó gói dữ liệu được gửi đi.
//Khởi dựng tạo gói dữ liệu chứa trong bộ đệm buff[] và chiều dài gói dữ liệu len:
+public Datagrampackage(byte buff[], int len)
//Trả về địa chỉ chứa trong gói dữ liệu:
+public InetAddress getAddress()
// Trả về thật sự dữ liệu chứa trong gói:
+public byte[] getData()
//Trả về kích thước hay chiều dài gói dữ liệu:
+public int getLength()
//Trả về số hiệu cổng chứa trong gói dữ liệu:
+public int getPort()
HVTH: Lê Hồng Dũng – Lê Thị Thu Hà Trang 9
Tiểu luận: Lập trình Mạng GVHD:PGS.TS. Lê Văn Sơn
Lớp URL:
URL (Uniforn Resource Locator) là địa chỉ định vị tài nguyên trên mạng, thường một
URL bao gồm ba phần: phần nghi thức (protocol), phần địa chỉ hay tên máy chủ (host name)
và phần chỉ định tên tập tin hay tài liệu muốn lấy từ máy chủ về. Java đóng gói tất cả những
đặc điểm này vào một lớp URL.
//Tạo một đối tượng URL từ địa chỉ định vị là một chuỗi:
+public URL(String spec) throws MalformedURLException
//Tạo địa chỉ định vị tuyệt đối:
+public URL(String protocol, String host, int port, String file)
throws MalformedURLException
//Lấy nội dung mà kết nối theo địa chỉ URL có được:
+public final object getContent() Throws IOException
• Tại máy chủ đã sẵn có một ngân hàng đề thi, khi đồng ý yêu cầu của khách
thực hiện chọn đề thi một cách ngẫu nhiên từ ngân hàng đề và đóng gói đề thi
chuyển cho khách để tiến hành quá trình thi.
2.2. Phân tích bài toán.
Yêu cầu của bài toán: Để đáp ứng sự trao đổi thông tin giữa khách/chủ và máy chủ
đáp ứng yêu cầu thi của máy khách đòi hỏi tại máy chủ và máy khách cần phải đảm bảo
những dữ liệu cần thiết sau:
Tại Server:
• Tạo luồng sẵn sàng kết nối được với các Client.
• Soạn sẵn một ngân hàng đề thi theo nhiệm vụ đào tạo.
(Ngân hàng đề thi được soạn trước với cấu trúc theo từng tên đề cụ thể. Mỗi đề thi lại gồm
nhiều câu hỏi khác nhau được lưu vào ngân hàng đề trên cơ sở mỗi bài được chỉ số hóa:
• Tạo hàm để truy xuất đề thi theo tên đề thi mà Client gửi lên.
• Tạo một hàng đợi để trích chọn và lưu đề thi.
• Tạo các gói câu hỏi theo từng đề thi.
Tại mỗi Client:
• Tạo luồng kết nối được với Server để gửi số đề thi lên cho Server.
• Nhận gói đề thi do Server chuyển đến.
2.3. Các bước của chương trình.
Quá trình thực hiện bài toán trong chương trình được thực hiện như sau:
HVTH: Lê Hồng Dũng – Lê Thị Thu Hà Trang 11
Tiểu luận: Lập trình Mạng GVHD:PGS.TS. Lê Văn Sơn
Bước1:
• Kết nối thông tin giữa Client và Server.
Bước 2:
• Client gửi yêu cầu về số đề thi đến Server.
Bước 3:
• Server chấp nhận yêu cầu của Client, nếu không phải thông báo:
• Server truy xuất đề thi theo yêu cầu và quy định số câu hỏi của đề thi.
Bước 4:
HVTH: Lê Hồng Dũng – Lê Thị Thu Hà Trang 13
Bắt đầu
Tạo giao diện
Đợi kết nối từ các Client
Nhận kết nối
Sai
Đúng
Tạo một Thread mới cho
MultipleSocketServer
Kết thúc
Tiểu luận: Lập trình Mạng GVHD:PGS.TS. Lê Văn Sơn
Sơ đồ khối cho chương trình chính của Client như sau:
HVTH: Lê Hồng Dũng – Lê Thị Thu Hà Trang 14
Bắt
đầu
Tạo kết nối với CSDL
Nhận thông tin từ Client
Thực thi việc cập nhật, sửa, xuất
thông tin theo thông tin nhận được
Gửi kết quả về cho Client
Kết thúc
Bắt
đầu
Tạo giao diện
Kết nối đến Server
Thực hiện yêu xuất trên giao
diện
Chuyển yêu cầu đến
Server
Nhận kết quả từ Server, xuất kết
được yêu cầu giả lập Server và Client, tạo kết nối giữa chúng, trao đổi thông tin với nhau.
Việc chưa làm được còn nhiều như: chưa thể hiện quá trình chiết xuất ngẫu nhiên đề thi từ
ngân hàng đề sang hàng đợi… Do vậy đề tài này còn rất nhiều thiếu sót và chưa được hoàn
chỉnh theo yêu cầu. Rất mong sự thông cảm và giúp đỡ của Thầy cùng các bạn trong lớp.
Xin chân thành cảm ơn Thầy và các bạn
HVTH: Lê Hồng Dũng – Lê Thị Thu Hà Trang 18
Tiểu luận: Lập trình Mạng GVHD:PGS.TS. Lê Văn Sơn
TÀI LIỆU THAM KHẢO
1. Hệ tin học phân tán – TS. Lê Văn Sơn: NXB Đại học quốc gia TP HCM- 2002
2. Giáo trình Mạng máy tính –PGS.TS Lê Văn Sơn (ĐHSP Đà Nẵng)
3. Java tập 1 – Phương Lan, Hoàng Đức Hải: NXB Lao động Xã hội
4. Java tập 2 – Phương Lan, Hoàng Đức Hải: NXB Lao động Xã hội
5. Giáo trình Lý thuyết và bài tập Java – Trần Tiến Dũng: NXB Lao động Xã hội - 2007
6. Các nội dung liên quan về lập trình Java và lập trình mạng trên mạng Internet.
HVTH: Lê Hồng Dũng – Lê Thị Thu Hà Trang 19