Tải bản đầy đủ (.doc) (19 trang)

TIỂU LUẬN MÔN HỌC LẬP TRÌNH MẠNG LỰA CHỌN ĐỀ THI TỪ XA

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 (250.27 KB, 19 trang )

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


2.4. Demo chương trình 15
PHẦN KẾT LUẬN 18
TÀI LIỆU THAM KHẢO 19
HVTH: Lê Hồng Dũng – Lê Thị Thu Hà Trang 2
Tiểu luận: Lập trình Mạng GVHD:PGS.TS. Lê Văn Sơn
LỜI MỞ ĐẦU
Thời đại ngày nay, Công nghệ thông tin chiếm lĩnh một vị trí hàng đầu trong hệ thống
khoa học kỹ thuật, đồng thời nó đóng góp tích cực cho mọi sự thành công của mọi lĩnh vực
khác trong đời sống xã hội.
Qua quá trình tiếp nhận, lĩnh hội, tìm hiểu và nghiên cứu những kiến thức về hệ tin
học phân tán, lập trình mạng và được sự hướng dẫn tận tình của PGS.TS Lê Văn Sơn. Nhóm
chúng tôi chọn thực hiện đề tài “Lựa chọn đề thi từ xa”. Đây là một bài toán khá hấp dẫn,
phù hợp với xu thế hiện nay và mang tính thực tế cao.
Nội dung đề tài này bao gồm:
-Chương 1: Nghiên cứu những vấn đề cơ bản về lập trình Java trên mạng.
-Chương 2: Tìm hiểu bài toán “Lựa chọn đề thi từ xa”
Trong một thời gian ngắn, chúng tôi bước đầu làm quen với ngôn ngữ lập trình Java
để giải quyết một bài toán lớn nên không thể tránh khỏi được những hạn chế và sai sót. Rất
mong sự góp ý quý báu của Thầy và các bạn để đề tài được hoàn thiện và đáp ứng thực tế
hơn.
HVTH: Lê Hồng Dũng – Lê Thị Thu Hà Trang 3
Tiểu luận: Lập trình Mạng GVHD:PGS.TS. Lê Văn Sơn
CHƯƠNG 1
NGHIÊN CỨU NHỮNG VẤN ĐỀ CƠ BẢN VỀ
LẬP TRÌNH JAVA TRÊN MẠNG
1.1. Tìm hiểu ngôn ngữ lập trình Java.
Trong thời đại thông tin bùng nổ ngày nay, việc lập được các chương trình hoạt động
cho máy tính, máy gia dụng là rất cần thiết. Tuy nhiên việc chọn một ngôn ngữ thích hợp lại
là một vấn đề không đơn giản. Có rất nhiều ngôn ngữ lập trình như ADA, COBOL, Basic,
Visual Basic, Pascal, C, C

++
, …. 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.

Giao thức TCP gửi từng gói dữ liệu đi, nơi nhận theo giao thức này phải có trách
nhiệm thông báo và kiểm tra xem dữ liệu đã đến đủ hay không, có lỗi hay không có lỗi.
Trước khi chuyển dữ liệu bao giờ cũng có sự kết nối giữa máy gửi và máy nhận. Do phải bảo
đảm dữ liệu được truyền chính xác và luôn duy trì kết nối nên sử dụng giao thức TCP cần
chiếm thêm một số tài nguyên của hệ thống và cách lập trình cho giao thức này khá phức tạp.
HVTH: Lê Hồng Dũng – Lê Thị Thu Hà Trang 4
Tiểu luận: Lập trình Mạng GVHD:PGS.TS. Lê Văn Sơn
Truyền dữ liệu theo giao thức TCP thường được áp dụng cho các dịch vụ như truyền tập tin,
các dịch vụ trực tuyến trên Internet đòi hỏi độ tin cậy cao.
Hình 1: Mô hình Họ giao thức TCP/IP
1.2.2. Chuyển dữ liệu trên mạng và giao thức UDP (User Datagram Protocol).
Quá trình chuyển dữ liệu trên mạng diễn ra hết sức phức tạp. Chi tiết quá trình này
được xem như tương tự trong thực tế khi ta gửi thư hay bưu phẩm. Trước hết phải ghi rõ địa
chỉ nơi đến (địa chỉ IP của máy chủ), sau đó có thể gửi thông thường hay gửi bảo đảm. Cách
chuyển dữ liệu bảo đảm dựa vào giao thức TCP còn cách chuyển không bảo đảm dựa vào
giao thức UDP.
Giao thức UDP ngược lại với TCP là không có sự bảo đảm nên có độ tin cậy thấp, vì
nó không đòi hỏi sự kết nối trước nào giữa nơi gửi và nơi nhận. Dữ liệu gửi đi được mặc
định rằng máy tính ở đầu nhận luôn ở trạng thái sẵn sàng để tiếp đón dữ liệu gửi đến. Nếu dữ
liệu gửi đến bị lỗi trong quá trình truyền hay không nhận được đầy đủ giao thức UDP cũng
không có thông báo gì cho nơi gửi. Tuy nhiên UDP không đòi hỏi nhiều tài nguyên của hệ
thống và cách lập trình lại tỏ ra đơn giản. Truyền dữ liệu theo giao thức UDP thường được
dùng trong những ứng dụng không đòi hỏi sự chính xác cao như dịch vụ thông báo giờ, tỉ
giá, dịch vụ gửi tin nhắn,…
1.3. Giao tiếp trên mạng theo mô hình khách/chủ (Client/Server) và khái niệm Socket.
 Giao tiếp theo mô hình khách/chủ:
Sự giao tiếp trên mạng giữa các máy đòi hỏi phải được kết nối vào Internet thông qua
dịch vụ của nhà cung cấp (ISP). Các nhà dịch vụ này đóng vai trò như những máy chủ
(Server) giúp dễ dàng truy cập dữ liệu từ những vùng khác nhau trên mạng.
HVTH: Lê Hồng Dũng – Lê Thị Thu Hà Trang 5

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

điện còn máy chủ là ổ cắm điện. Vì thế một máy chủ có thể kết nối và phục vụ cho rất nhiều
máy khách. Nếu kết nối Socket thành công thì máy khách và máy chủ được trao đổi dữ liệu
với nhau thông qua các yêu cầu về dịch vụ trên máy chủ. Việc kết nối theo cơ chế socket cần
biết hai thông tin chủ yếu đó là địa chỉ của máy cần kết nối và số hiệu cổng của chương trình
dịch vụ. Java đã cung cấp lớp Socket và ServerSocket đầy đủ trong gói thư viện Java.net.
Socket là điểm kết thúc trong quá trình truyền nhận dữ liệu giữa hai quá trình. Khi cần
gửi dữ liệu đi, các quá trình ghi dữ liệu vào socket, khi có dữ liệu đến, quá trình sẽ đọc
socket để lấy dữ liệu ra. Việc truyền nhận giữa hai socket sẽ tuân theo nghi thức TCP/IP. Các
socket có thể liên lạc với nhau theo giao thức UDP hay TCP.
HVTH: Lê Hồng Dũng – Lê Thị Thu Hà Trang 6
Tiểu luận: Lập trình Mạng GVHD:PGS.TS. Lê Văn Sơn
Socket API cung cấp hai dịch vụ chuyển dữ liệu: Unreliable Datagram, Reliable, byte
Stream-Oriented. Socket là "Cửa" nằm giữa process ứng dụng và End-End Transport
protocol (UDP hay TCP).
TCP service: dịch vụ truyền tin chuỗi byte giữa hai process
Hình 3: Mô hình truyền dữ liệu sử dụng Socket trên môi trường TCP.
1.4. Thư viện Java.net và sử dụng TCP Socket.
1.4.1. Tìm hiểu một số lớp cần thiết của gói thư viện Java.net.
 Lớp InetAddress:
Vì địa chỉ Internet theo số IP và theo tên thường dùng khi kết nối vào mạng, cho nên
Java xây dựng hẳn một lớp InetAddress dành riêng cho việc quản lý địa chỉ theo tên và theo
số. Lớp InetAddress cung cấp các phương thức static thông dụng nhất dùng để chuyển đổi và
truy xuất địa chỉ IP:
//Trả về đối tượng InetAddress là địa chỉ của máy cục bộ (local host):
+public static InetAddress getLocalHost()
Throws unknownHostExceptiongetByName
//Nhận địa chỉ của một máy bằng kiểu chuỗi và trả về đối tượng InetAddress:
+public static InetAddress getByName(String host)
Throws unknownHostException
//Nhận địa chỉ của một máy bằng kiểu chuỗi và trả về cho tất cả các đối tượng InetAddress:

+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
 Lớp ServerSocket:
Lớp ServerSocket dùng tạo kết nối từ phía máy chủ với các máy khách. Đối tượng
ServerSocket được tạo ra trên máy chủ và lắng nghe những kết nối từ phía máy khách gửi
đến theo một số cổng định trước.
//Đối tượng ServerSocket nhận biết tín hiệu từ máy khách thông qua cổng port:
+public ServerSocket(int port)
Throws IOException
//Chờ đợi kết nối từ các máy khác nhờ đến phương thức accept:
+Socket accept()
Throws IOException
HVTH: Lê Hồng Dũng – Lê Thị Thu Hà Trang 8
Tiểu luận: Lập trình Mạng GVHD:PGS.TS. Lê Văn Sơn
//Máy chủ có thể cắt đức mọi kết nối bằng phương thức close của đối tượng ServerSocket:
+pulic void close()
Throws IOException
 Lớp DatagramSocket:
Lớp DatagramSocket dùng để chuyển đi một gói dữ liệu theo giao thức UDP. Dữ liệu
được gửi đikhông đảm bảo được nhận đầy đủ và có thể bị lỗi trên đường truyền.
//Khởi dựng để tạo kết nối UDP:
+public datagramSocket()
Throws IOException
//Khởi dựng để tạo kết nối UDP với số hiệu cổng port:
+public DatagramSocket(int port)
Throws IOException
//Gửi gói dữ liệu đi:
+public void synchronĩed sen(Datagrampackage p)
Throws IOException
//Nhận gói dữ liệu về:
+public void synchronized receive(DatagramPackage p)

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

//Lấy về thành phần tên tập tin hay tài liệu trong chuỗi địa chỉ URL:
+String getFile()
//Lấy tên máy chủ:
+String getHost()
//Lấy về tên giao thức:
+String getProtocol()
//Lấy về số hiệu cổng:
+String getPort()
//Lấy về nội dung tham khảo thêm trong chuỗi URL:
+String getref()
//Mở rộng luồng nhập để đọc thông tin trả về từ máy chủ:
+public final InputStream opentStream()
Throws IOException
HVTH: Lê Hồng Dũng – Lê Thị Thu Hà Trang 10
Tiểu luận: Lập trình Mạng GVHD:PGS.TS. Lê Văn Sơn
CHƯƠNG 2
BÀI TOÁN “LỰA CHỌN ĐỀ THI TỪ XA”
2.1. Mô tả bài toán “Lựa chọn đề thi từ xa”.
Ở một đơn vị đào tạo từ xa có nhiều dịch vụ khác nhau như đăng ký , tổ chức đào tạo,
kiểm tra đánh giá, thi hết học phần…. qua hệ thống mạng trên mô hình khách/chủ
(Client/Server). Như vậy để đáp ứng được mọi nhu cầu của hệ thống thì một máy chủ phải
sẵn sàng cung cấp đầy đủ các gói thông tin theo yêu cầu cho nhiều máy khách.
Sau khi kết thúc một khoá học (hoặc gần kết thúc), trung tâm lập danh sách cho các
học viên được dự thi, tạo tên truy nhập và tài khoản truy nhập ngẫu nhiên cho từng học viên.
Thông tin trên được gửi tới cho các học viên để truy cập vào hệ thống khi dự thi.
Ngày thi, học viên sau khi vào hệ thống qua tài khoản sẽ được lựa chọn đề thi cho
mình. Các câu hỏi được lấy ngẫu nhiên từ ngân hàng đề.
Bài toán lựa chọn đề thi từ xa là một trong những nhiệm vụ của trung tâm:
• Các máy khách có nhu cầu gửi cho máy chủ về thông tin đăng ký đề thi của
mình.

• 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:

• Server chuyển gói đề thi đã được trích chọn cho Client.
• Kết thúc quy trình chuyển giao đề thi.
Sơ đồ các bước thực hiện như sau:
Client Server
Khởi động/lắng nghe các yêu cầu từ phía các Client
Khởi động
Kiểm tra kết nối
Gửi truy vấn (số đề thi lựa chọn)
Nhận truy vấn
Kiểm tra
đề thi đã
được lựa
chọn bởi
1 Client
khác hay
chưa.
Nếu đã được lựa chọn bởi 1 client khác,
thì yêu cầu Client gửi lại truy vấn
Nếu đề thi chưa được lựa chọn bởi một
client nào truớc đó thì Server kết nối cơ
sở dữ liệu, trả về nội dung đề thi tuơng
ứng cho client
Trả kết quả về lại cho client
Nhận kết quả và hiển thị
HVTH: Lê Hồng Dũng – Lê Thị Thu Hà Trang 12
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 Server như sau:
- Tuy nhiên đây là chương trình đa truy cập, ngẫu nhiên, từ xa với số lượng truy cập
lớn, do đó phải xây dựng một Server có thể nhận kết nối từ nhiều Client cùng lúc. Sơ đồ khối
cho MultipleSocketServer:

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

quả ra màn hình
Kết thúc
Tiểu luận: Lập trình Mạng GVHD:PGS.TS. Lê Văn Sơn
2.4. Demo chương trình
Khi chạy chương trình Server, giao diện của sever sẽ là
Khi chạy chương trình Client, giao diện sẽ hiển thị được địa chỉ Server mà nó đang
kết nối đến, cụ thể ở đây là Server 127.0.0.1
HVTH: Lê Hồng Dũng – Lê Thị Thu Hà Trang 15
Tiểu luận: Lập trình Mạng GVHD:PGS.TS. Lê Văn Sơn
Lúc này Server cũng nhận được kết nối từ phía Client, nó xác nhận rằng đang có 1
Client đang kết nối vào nó
Giả sử lúc này Client chọn mã đề số 2 thì dữ liệu sẽ được hiển thị như sau
Lúc này, đề số 2 sẽ bị khóa, nếu một Client khác đăng nhập vào hệ thống thì không
thể lấy được nội dung đề số 2, trừ khi client 1 thoát thì lúc này Client tiếp theo này mới có
thể xem đề số 2
HVTH: Lê Hồng Dũng – Lê Thị Thu Hà Trang 16
Tiểu luận: Lập trình Mạng GVHD:PGS.TS. Lê Văn Sơn
Giả sử lúc này client thứ 2 cũng chọn đề số 2. Lúc này chương trình sẽ báo là có
client chọn đề thi này truớc đó
HVTH: Lê Hồng Dũng – Lê Thị Thu Hà Trang 17
Tiểu luận: Lập trình Mạng GVHD:PGS.TS. Lê Văn Sơn
PHẦN KẾT LUẬN
Mô hình Client/Server được áp dụng rộng rãi trong lập trình mạng và ngôn ngữ lập
trình Java đã hỗ trợ đầy đủ các chức năng lập trình hướng đối tượng để giải quyết tốt công
việc của người lập trình. Qua một thời gian tiếp cận với môn học lập trình mạng do PGS.TS
Lê Văn Sơn đã trực tiếp giảng dạy và giúp đỡ, tôi đã có cơ hội tìm hiểu, nghiên cứu ngôn
ngữ lập trình Java và môn học lập trình mạng này.
Tuy bước đầu, chỉ mới tiếp cận, tìm hiểu Java và bước đầu thử ứng dụng Java để giải
quyết một bài toán trong thực tế “Lựa chọn đề Thi từ xa qua mạng” nên đề tài không tránh
khỏi hạn chế và sai sót. Chương trình ứng dụng còn dừng lại ở mức độ cơ bản: mới thực hiện

đượ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

×