-
Thông tin
-
Hỏi đáp
Đồ án môn học lập trình mạng "Xây dựng ứng dụng chat theo mô hình CLIENT - SERVER"
Đồ án môn học lập trình mạng "Xây dựng ứng dụng chat theo mô hình CLIENT - SERVER"
Lập trình mạng (vku) 1 tài liệu
Trường ĐH CNTT và Truyền thông Việt Hàn, Đại học Đà Nẵng 26 tài liệu
Đồ án môn học lập trình mạng "Xây dựng ứng dụng chat theo mô hình CLIENT - SERVER"
Đồ án môn học lập trình mạng "Xây dựng ứng dụng chat theo mô hình CLIENT - SERVER"
Môn: Lập trình mạng (vku) 1 tài liệu
Trường: Trường ĐH CNTT và Truyền thông Việt Hàn, Đại học Đà Nẵng 26 tài liệu
Thông tin:
Tác giả:
Tài liệu khác của Trường ĐH CNTT và Truyền thông Việt Hàn, Đại học Đà Nẵng
Preview text:
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG VIỆT - HÀN
KHOA KHOA HỌC MÁY TÍNH
ĐỒ ÁN MÔN HỌC LẬP TRÌNH MẠNG
XÂY DỰNG ỨNG DỤNG CHAT THEO MÔ HÌNH CLIENT - SERVER
Sinh viên thực hiện : NGUYỄN PHƯỚC THỊNH
Giảng viên hướng dẫn: THS. NGUYỄN THANH CẨM Lớp : 20SE2
Đà Nẵng, tháng 10 năm 2022
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG VIỆT – HÀN
KHOA KHOA HỌC MÁY TÍNH
ĐỒ ÁN MÔN HỌC LẬP TRÌNH MẠNG
XÂY DỰNG ỨNG DỤNG CHAT THEO MÔ HÌNH CLIENT - SERVER
Đà Nẵng, tháng 10 năm 2022 LỜI NÓI ĐẦU
Ngày nay, ứng dụng công nghệ thông tin và việc tin học hóa được xem là một trong những yếu
tố mang tính quyết định trong hoạt động của các chính phủ, tổ chức, cũng như của các công ty,
nó đóng vai trò hết sức quan trọng, có thể tạo ra những bước đột phá mạnh mẽ.
Cùng với sự phát triển không ngừng về kỹ thuật máy tính và mạng điện tử, công nghệ thông tin
cũng được những công nghệ có đẳng cấp cao và lần lượt chinh phục hết đỉnh cao này đến đỉnh
cao khác. Mạng Internet là một trong những sản phẩm có giá trị hết sức lớn lao và ngày càng
trở nên một công cụ không thể thiếu, là nền tảng chính cho sự truyền tải, trao đổi thông tin trên toàn cầu.
Giờ đây, mọi việc liên quan đến thông tin trở nên thật dễ dàng cho người sử dụng: chỉ cần có
một máy tính kết nối internet và một dòng dữ liệu truy tìm thì gần như lập tức… cả thế giới về
vấn đề mà bạn đang quan tâm sẽ hiện ra, có đầy đủ thông tin, hình ảnh và thậm chí đôi lúc có
cả những âm thanh nếu bạn cần… Bằng internet, chúng ta đã thực hiện được nhiều công việc
với tốc độ nhanh hơn và chi phí thấp hơn nhiều so với cách thức truyền thống. Chính điều này,
đã thúc đẩy sự khai sinh và phát triển của thương mại điện tử và chính phủ điện tử trên khắp
thế giới, làm biến đổi đáng kể bộ mặt văn hóa, nâng cao chất lượng cuộc sống con người.
Trong nội bộ trường đại học, cần có các kênh giao tiếp cho sinh viên. Giúp tăng hiệu quả làm
việc và học tập giữa các sinh viên.
Vì vậy, em đã thực hiện đồ án môn học “XÂY DỰNG ỨNG DỤNG CHAT THEO MÔ HÌNH CLIENT - SERVER”. LỜI CẢM ƠN
Em xin gửi lời cảm ơn chân thành tới nhà trường, khoa Khoa học máy tính đã tận tình chỉ bảo,
góp ý và tạo điều kiện cho em hoàn thành đề tài nghiên cứu Đồ án môn học “Lập trình mạng” một cách tốt nhất.
Em xin cảm ơn ThS. Nguyễn Thanh Cẩm đã nhiệt tình hướng dẫn em trong quá trình thực hiện
báo cáo đề tài nghiên cứu.
Trong quá trình thực hiện đề tài nghiên cứu, bản thân em đã cố gắng nỗ lực, tuy nhiên không
tránh khỏi sai sót. Em mong nhận được sự góp ý của thầy cô giáo, và từ phía hội đồng để đề tài
nghiên cứu của em được hoàn thiện hơn.
Em xin chân thành cảm ơn!
Đà Nẵng, tháng 10 năm 2022 NHẬN XÉT
(Của giảng viên hướng dẫn)
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
……………………………………………………………………………………… MỤC LỤC Contents
Chương 1 Cơ sở lý thuyết ...................................................................................................... 1
1.1 Sơ lược về lập trình mạng ................................................................................................ 1
1.1.1 Khái niệm lập trình mạng .......................................................................................... 1
1.1.2 Một số mô hình mạng ............................................................................................... 1
1.1.3 Một số mô hình ứng dụng mạng ................................................................................ 4
1.1.4 Một số giao thức mạng .............................................................................................. 7
1.2 Sơ lược về socket........................................................................................................... 11
1.2.1 Khái niệm socket .................................................................................................... 11
1.2.2 Chức năng của socket ............................................................................................. 11
1.2.3 Stream socket .......................................................................................................... 12
1.3 Tổng quan về ngôn ngữ lập trình Java ............................................................................ 12
Chương 2 Phân tích thiết kế hệ thống ................................................................................... 14
2.1 Mô hình tương tác giữa Client và Server ........................................................................ 14
2.2 Yêu cầu hệ thống ........................................................................................................... 15
2.2.1 Danh sách các tác nhân ........................................................................................... 15
2.2.2 Yêu cầu phi chức năng ............................................................................................ 16
2.2.3 Yêu cầu chức năng .................................................................................................. 16
2.3 Biểu đồ ca sử dụng ........................................................................................................ 17
2.3.1 Biểu đồ ca sử dụng phía Client ................................................................................ 17
2.3.2 Biểu đồ ca sử dụng phía Server ............................................................................... 17
2.4 Biểu đồ hoạt động .......................................................................................................... 18
2.5 Biểu đồ trạng thái .......................................................................................................... 20
2.6 Biểu đồ trình tự ............................................................................................................. 21
2.7 Biểu đồ giao tiếp ............................................................................................................ 22
Chương 3 Chương trình demo .............................................................................................. 23
3.1 Chương trình phía Client ............................................................................................... 23
3.1.1 Màn hình Splash ..................................................................................................... 23
3.1.2 Màn hình kết nối Client đến Server ......................................................................... 23
3.1.3 Màn hình chính của Client ...................................................................................... 24
3.1.4 Màn hình hộp chat .................................................................................................. 26
3.2 Chương trình phía Server ............................................................................................... 30
3.2.1 Màn hình Splash ..................................................................................................... 30
3.2.2 Màn hình chính của Server ..................................................................................... 32
Kết luận và hướng phát triển.................................................................................................... 34
1 Kết luận ............................................................................................................................ 34
2 Hướng phát triển............................................................................................................... 34
TÀI LIỆU THAM KHẢO ....................................................................................................... 35
DANH MỤC CÁC BẢNG
Bảng 1 – Liệt kê các tác nhân .................................................................................................. 15
Bảng 2 – Yêu cầu chức năng phía Client ................................................................................. 16
Bảng 3 – Yêu cầu chức năng phía Server ................................................................................. 17 DANH MỤC HÌNH
Hình 1 – Mô hình OSI .............................................................................................................. 2
Hình 2 – Mô hình TCP/IP......................................................................................................... 3
Hình 3 – Mô hình Cient/Server ................................................................................................. 5
Hình 4 – Mô hình P2P .............................................................................................................. 6
Hình 5 – Nguyên lý hoạt động của TCP .................................................................................... 8
Hình 6 – Cấu trúc cơ bản của 1 ứng dụng web ........................................................................ 10
Hình 7 – Giao thức HTTPS .................................................................................................... 11
Hình 8 – Logo của ngôn ngữ lập trình Java ............................................................................. 12
Hình 9 – Mô hình Client/Server sử dụng TCP socket .............................................................. 14
Hình 10 – Biểu đồ ca sử dụng phía Client ............................................................................... 17
Hình 11 – Biểu đồ ca sử dụng phía Server .............................................................................. 18
Hình 12 – Biểu đồ hoạt động cho ca sử dụng gửi tin nhắn văn bản .......................................... 19
Hình 13 – Biểu đồ hoạt động cho ca sử dụng dừng server ....................................................... 20
Hình 14 – Biểu đồ trạng thái cho ca sử dụng gửi tin nhắn văn bản .......................................... 20
Hình 15 – Biểu đồ trạng thái cho ca sử dụng dừng server ........................................................ 21
Hình 16 – Biểu đồ trình tự cho ca sử dụng gửi tin nhắn văn bản ............................................. 21
Hình 17 – Biểu đồ trình tự cho ca sử dụng dừng server ........................................................... 22
Hình 18 – Biểu đồ giao tiếp cho ca sử dụng gửi tin nhắn văn bản ............................................ 22
Hình 19 – Biểu đồ giao tiếp ca sử dụng dừng server ............................................................... 22
Hình 20 – Màn hình Splash phía client ................................................................................... 23
Hình 21 – Màn hình kết nối client đến server .......................................................................... 24
Hình 22 – Bị từ chối truy cập vì trùng username ..................................................................... 24
Hình 23 – Màn hình chính của client ...................................................................................... 25
Hình 24 – Màn hình kết nối client đến server sau khi thực hiện lưu server .............................. 26
Hình 25 – Xác nhận lời mời tham gia vào boxchat .................................................................. 26
Hình 26 – Boxchat được tạo ra ............................................................................................... 27
Hình 27 – Gửi tin nhắn văn bản .............................................................................................. 28
Hình 28 – Gửi tệp ................................................................................................................... 29
Hình 29 – Gửi emoij ............................................................................................................... 30
Hình 30 – Màn hình splash phía server ................................................................................... 31
Hình 31 – Màn hình chính của server ..................................................................................... 32
Hình 32 – Thông tin server ..................................................................................................... 32
Hình 33 – Thống kê của server ............................................................................................... 33
Hình 34 – Khởi động/Ngừng server ........................................................................................ 33
Hình 35 – Danh sách user đang trực tuyến .............................................................................. 33
DANH MỤC CỤM TỪ VIẾT TẮT STT Cụm từ Viết tắt 1 TCP Transmission Control Protocol 2 UDP User Datagram Protocol 3 IP Internet Protocol 4 IDE
Integrated Development Environment
Chương 1 Cơ sở lý thuyết
1.1 Sơ lược về lập trình mạng
1.1.1 Khái niệm lập trình mạng
Lập trình mạng là một công việc nhằm phát triển các ứng dụng doanh nghiệp hoạt động trên
mạng Internet. Theo đó, người lập trình cần viết ra một chương trình mạng để chạy những
chương trình trên các máy tính khác nhau, giúp các nút mạng ấy chia sẻ dữ liệu, truyền tin an toàn, hiệu quả.
Nói dễ hiểu thì bản chất của lập trình mạng chính là sử dụng các công cụ lập trình để tạo ra một
chương trình giúp các máy tính giao tiếp với nhau. Các công cụ ấy bao gồm: + Ngôn ngữ lập trình.
+ Kiến thức về phân tích thiết kế hệ thống, kiến thức hệ thống mạng, mô hình xây dựng
chương trình ứng dụng mạng, kiến thức về cơ sở dữ liệu, …
1.1.2 Một số mô hình mạng * Mô hình OSI:
- Mô hình OSI (Open Systems Interconnection) hay còn được gọi là “mô hình tham chiếu 7
tầng OSI”. Mục đích chính của chúng là giúp người sử dụng dễ hình dung hơn về cơ chế truyền
tin giữa các máy tính với nhau. Mô hình OSI bao gồm 7 tầng, mỗi tầng đều có đặc tính là chỉ
sử dụng chức năng của tầng dưới nó, đồng thời chúng cũng chỉ cho phép tầng trên sử dụng các
chức năng của mình. Mô hình OSI thực chất là chia nhỏ các hoạt động phức tạp của mạng
thành các phần công việc đơn giản , dễ hình dung hơn. 1
Hình 1 – Mô hình OSI
- Chức năng của từng tầng:
+ Tầng 1: Tầng vật lý (Physical Layer) có chức năng chính là điều khiển việc truyền tải
các bit trên đường truyền vật lý. Chúng định nghĩa các tín hiệu điện, trạng thái đường truyền,
phương pháp mã hóa dữ liệu.
+ Tầng 2: Tầng liên kết dữ liệu (Data-Link Layer) đảm bảo truyền tải các khung dữ liệu
(Frame) giữa hai máy tính có đường truyền vật lý nối trực tiếp với nhau là điều mà chúng thực
hiện. Ngoài ra nó còn cài đặt cơ chế phát hiện và xử lý lỗi dữ liệu nhận.
+ Tầng 3: Tầng mạng (Network Layer) đảm nhiệm việc truyển các gói tin (packet) giữa
hai máy tính bất kỳ trong mạng máy tính.
+ Tầng 4: Tầng vận chuyển (Transport Layer) vai trò của chúng là phân nhỏ các gói tin
có kích thước lớn khi gửi và tập hợp chúng khi nhận, quá trình phân nhỏ khi gửi và nhận đảm
bảo tính toàn vẹn cho dữ liệu (không bị mất mát, không lặp và đúng thứ tự). 2
+ Tầng 5: Tầng giao dịch (Session) quản lý phiên làm việc giữa các người sử dụng chính
là việc mà chúng làm. Tầng mạng này cung cấp cơ chế nhận biết tên và chức năng bảo mật
thông tin qua mạng máy tính.
+ Tầng 6: Tầng trình bày (Presentaition Layer) đảm bảo các máy tính có kiểu dụng dạng
dữ liệu khác nhau vẫn có thể trao đổi thông tin cho nhau. Thường thì các máy tính sẽ thống
nhất với nhau về một kiểu định dạng dữ liệu trung gian để trao đổi thông tin giữa các máy tính.
Trong quá trình truyền dữ liệu, tầng trình bày bên máy gửi có nhiệm vụ dịch dữ liệu từ định
dạng riêng sang định dạng chung và quá trình ngược lại trên tầng trình bày bên máy nhận.
+ Tầng 7: Tầng ứng dụng (Application Layer) là tầng cung cấp các ứng dụng truy xuất
đến các dịch vụ mạng như Web Browser,Mail User Agent…hoặc các Program cung cấp các
dịch vụ mạng như Web Server, FTP Server, Mail Server… * Mô hình TCP/IP:
- Nếu OSI được hình thành mang tính chất dùng cho học tập nghiên cứu nhiều hơn là triển khai
thực tế, thì TCP/IP lại khác hoàn toàn. Chính trên chiếc máy tính chúng ta đang sử dụng hàng
ngày cũng dùng các giao thức TCP/IPv4 hoặc TCP/IPv6. Mô hình TCP/IP còn được gọi với cái
tên khác đó là mô hình DoD.
Hình 2 – Mô hình TCP/IP - Chức năng các tầng: 3
+ Tầng 1: Tầng truy cập (Network Access Layer) có thể coi là một tầng riêng biệt hoặc
cũng có thể tách nó thành 2 tầng vật lý và tầng liên kết dữ liệu như trong mô hình OSI. Nó
được sử dụng để truyền gói tin từ tầng mạng đến các Host trong mạng. Các thiết bị vật lý như:
Switch, cáp mạng, card mạng HBA-Host Bus Adapter là các thành phần truy cập.
+ Tầng 2: Tầng mạng (Internet Layer) trên mô hình TCP/IP có vai trò chính là giải
quyết vấn đề dẫn đến các gói tin đi qua các mạng để đến đúng đích.
+ Tầng 3: Tầng vận chuyển (Transport Layer) đảm nhiệm việc phân nhỏ các gói tin có
kích thước lớn khi gửi và tập hợp lại khi nhận, tính toàn vẹn cho dữ liệu (không lỗi, không mất,
đúng thứ tự) là yếu tố được đảm bảo. Nếu để ý thì bạn sẽ thất chức năng của tầng vận chuyển ở
giao thức TCP/IP cũng giống với tầng vận chuyển của mô hình OSI.
+ Tầng 4: Tầng ứng dụng (Application Layer) là nơi các chương trình mạng như Web
Browser, Mail User Agent làm việc để liên lạc giữa các node mạng. Do mô hình TCP/IP không
có tầng nào nằm giữa các tầng ứng dụng và tầng vận chuyển, nên tầng Application của TCP/IP
bao gồm các giao thức hoạt động như tầng trình diễn và giao dịch trong OSI.
1.1.3 Một số mô hình ứng dụng mạng
* Mô hình Client/Server:
- Client/Server là mô hình mạng máy tính bao gồm 2 thành phần chính là máy khách (client) và
máy chủ (server). Trong mô hình này, server là nơi lưu trữ tài nguyên, cài đặt các chương trình
dịch vụ và thực hiện các yêu cầu của client. Client đón vai trò gửi yêu cầu đến server. Client
gồm máy tính và thiết bị điện tử nói chung. 4
Hình 3 – Mô hình Cient/Server
- Ưu nhược điểm của Client server: + Ưu điểm:
Có khả năng chống quá tải mạng.
Đảm bảo toàn vẹn dữ liệu khi có sự cố xảy ra.
Dễ dàng mở rộng hệ thống mạng.
Chỉ cần chung định dạng giao tiếp mà không cần chung nền tảng là có thể hoạt động được.
Cho phép tích hợp các kỹ thuật hiện đại như GIS, mô hình thiết kế hướng đối tượng, …
Có thể truy cập dữ liệu từ xa, thực hiện các thao tác gửi, nhận file hay tìm kiếm thông tin đơn giản. + Nhược điểm:
Cần bảo trì, bảo dưỡng server thường xuyên.
Khả năng bảo mật thông tin mạng là một hạn chế nữa của Client/Server. Bởi vì,
nguyên lý hoạt động của Client/Server là trao đổi dữ liệu giữa server và client ở 2
khu vực địa lý khác nhau. Trong quá trình trao đổi dữ liệu, khả năng thông tin
mạng bị lộ là điều dễ xảy ra.
- Nguyên lý hoạt động của Client/Server: 5
+ Client hay chính là máy khách, máy trạm – là nơi gửi yêu cầu đến server. Nó tổ chức
giao tiếp với người dùng, server và môi trường bên ngoài tại trạm làm việc. Client tiếp nhận
yêu cầu của người dùng sau đó thành lập các query string để gửi cho server. Khi nhận được kết
quả từ server, client sẽ tổ chức và trình diễn những kết quả đó.
+ Server xử lý yêu cầu gửi đến từ client. Sau khi xử lý xong, server sẽ gửi trả lại kết quả,
client có thể tiếp tục xử lý các kết quả này để phục vụ người dùng. Server giao tiếp với môi
trường bên ngoài và client tại server, tiếp nhận yêu cầu dưới dạng query string (xâu ký tự). Khi
phân tích xong các xâu ký tự, server sẽ xử lý dữ liệu và gửi kết quả về cho client.
* Mô hình Peer to Peer:
- P2P – Peer-to-peer (mạng ngang hàng) là một mô hình mạng phi tập trung với các bên có các
cấu trúc phiên giao tiếp giống nhau. Trong đó, mỗi nút hoạt động giống như một máy khách và
máy chủ của hệ thống cho phép chia sẻ các phương tiện truyền thông với nhau dễ dàng hơn, nhanh chóng hơn.
Hình 4 – Mô hình P2P
- Ưu nhược điểm của P2P: + Ưu điểm:
Không cần sử dụng tới máy chủ.
Mỗi một thiết bị máy tính là một người dùng quản lý riêng.
Không yêu cầu bất kỳ các kiến thức kỹ thuật chuyên ngành phức tạp nào.
Một mạng P2P thích hợp với môi trường gia đình và doanh nghiệp nhỏ.
Sử dụng ít lưu lượng truy cập mạng. + Nhược điểm: 6
Các thông tin trên máy không thể thực hiện sao lưu tập trung.
Việc cho phép truy cập cùng một lúc bởi nhiều thiết bị máy tính làm giảm hiệu suất hoạt động.
Các tệp không được sắp xếp khoa học mà được lưu trữ trên máy tính cá nhân gây
khó khăn trong việc xác định vị trí của chúng.
Việc đảm bảo an toàn cho hệ thống mạng là việc của tất cả người dùng.
Chỉ cung cấp một số quyền cơ bản và không có bảo mật nâng cao.
1.1.4 Một số giao thức mạng
Đơn giản mà nói thì giao thức mạng như một bộ quy tắc và chúng phải tuân theo những quy tắc
bắt buộc đó. Nó giống như những tiêu chuẩn và chính sách chính thức và gộp lại, tạo nên
những quy tắc đó. các giao thức mạng này nhằm thực hiện những hành động, chính sách và giải
quyết vấn đề từ đầu đến cuối giúp quá trình giao tiếp mạng hoặc dữ liệu diễn ra kịp thời.
Giao thức mạng bao gồm trong đó có sự liên kết giữa máy tính, router, máy chủ và các thiết bị
hỗ trợ mạng khác khi chúng muốn giao tiếp với nhau. Để đảm bảo quá trình giao tiếp dữ
liệu/mạng diễn ra suôn sẻ thì các giao thức mạng luôn phải được xác nhận và cài đặt bởi người gửi và người nhận. * Giao thức TCP:
- TCP (Transmission Control Protocol) là một giao thức mạng quan trọng được sử dụng trong
việc truyền dữ liệu qua một mạng nào đó. Một giao thức trong phạm vi mạng là một tập hợp
các quy tắc và trình tự kiểm soát việc thực hiện truyền dữ liệu sao cho tất cả mọi người trên thế
giới bất kể vị trí địa lý, bất kể ứng dụng, phần mềm họ đang sử dụng đều có thể thao tác theo
cùng một phương thức giống nhau được gọi là TCP.
- TCP thường kết hợp với IP (Giao thức Internet) theo một cặp được gọi là TCP/IP. IP sẽ xử lý
việc gán địa chỉ và chuyển tiếp các gói tin từ nguồn đến đích trong khi TCP kiểm soát độ tin cậy của truyền dẫn. 7
Hình 5 – Nguyên lý hoạt động của TCP
- TCP dán nhãn các gói tin theo dạng đánh số. TCP cũng sẽ đảm bảo rằng dữ liệu tới đích trong
một thời hạn xác định (một khoảng thời gian vài trăm mili giây được gọi là thời gian chờ) và
tuân theo một số quy định kỹ thuật khác. Với mỗi gói tin nhận được, thiết bị gửi sẽ được thông
báo thông qua một gói được gọi là xác nhận. Sau khi hết thời gian chờ, không nhận được xác
nhận, nguồn gửi sẽ gửi đi một bản sao của gói tin bị mất hoặc bị hoãn. Các gói tin không theo
trình tự cũng sẽ không được xác nhận. Nhờ vậy, tất cả các gói dữ liệu sẽ luôn được tập hợp
theo thứ tự, không có sơ hở, trong một khoảng thời gian chờ xác định và chấp nhận được.
- Địa chỉ TCP: trong khi IP có một cơ chế hoàn chỉnh để định gán địa chỉ được gọi là địa chỉ
IP, TCP lại không có hệ thống địa chỉ phức tạp như vậy. Đúng hơn là TCP không cần đến hệ
thống này. TCP chỉ sử dụng các số được cung cấp bởi thiết bị mà nó đang chạy trên đó để xác
định nơi nhận và truyền gói tin ở đâu, cho dịch vụ nào. Các số này được gọi là các port. Ví dụ,
các trình duyệt web thường sử dụng cổng 80 cho TCP, cổng 25 dùng cho email,… Số port
thường đi kèm với địa chỉ IP để chỉ 1 dịch vụ, ví dụ: 192.168.66.5:80.
- Ứng dụng của giao thức TCP: TCP/IP được sử dụng để kết nối thông tin trong Internet.
Người dùng có thể thực hiện cung cấp thông tin từ xa, gửi mail, truyền file, ảnh hoặc phân phối
web trên mạng Internet. Phương thức này cũng cho phép truy cập máy chủ từ xa, thay đổi trạng
thái thông tin truyền trong môi trường Internet. Với giao thức TCP/IP, người dùng có thể dễ
dàng thay đổi cách biểu thị thông tin thông qua các giao thức cơ bản hoặc giao thức ở mỗi lớp
khi thông tin được truyền qua. Nhờ đó, thao tác truyền thông tin sẽ chính xác và hiệu quả hơn. * Giao thức UDP:
- UDP (User Datagram Protocol) là một trong những giao thức cốt lõi của giao thức TCP/IP.
Dùng UDP, chương trình trên mạng máy tính có thể gửi những dữ liệu ngắn được gọi là 8
datagram tới máy khác. UDP không cung cấp sự tin cậy và thứ tự truyền nhận mà TCP làm;
các gói dữ liệu có thể đến không đúng thứ tự hoặc bị mất mà không có thông báo. Tuy nhiên
UDP nhanh và hiệu quả hơn đối với các mục tiêu như kích thước nhỏ và yêu cầu khắt khe về
thời gian. Do bản chất không trạng thái của nó nên nó hữu dụng đối với việc trả lời các truy vấn
nhỏ với số lượng lớn người yêu cầu.
Những ứng dụng phổ biến sử dụng UDP như DNS (Domain Name System), ứng dụng
streaming media, Voice over IP, Trivial File Transfer Protocol (TFTP), và game trực tuyến. * Giao thức SMTP:
- SMTP là giao thức tiêu chuẩn để gửi email. Nó thiết lập kênh kết nối giữa mail client và mail
server, và thiết lập kênh liên lạc giữa mail server gửi và mail server nhận. Email sẽ được đẩy từ
mail client lên mail server và từ mail server nó sẽ được server này gửi đi đến mail server nhận. * Giao thức POP3:
- POP3 (Post Office Protocol version 3) được sử dụng để kết nối tới server email và tải email
xuống máy tính cá nhân thông qua một ứng dụng email như Outlook, Thunderbird, Windows Mail, Mac Mail, ... * Giao thức IMAP:
- IMAP (Internet Message Access Protocol) được dùng để kéo emails về emails client, tuy
nhiên khác biệt với POP3 là nó chỉ kéo email headers về, nội dung email vẫn còn trên server.
Đây là kênh liên lạc 2 chiều, thay đổi trên mail client sẽ được chuyển lên server. Sau này, giao
thức này trở nên phổ biến nhờ nhà cung cấp mail lớn nhất thế giới, Gmail, khuyên dùng thay vì POP3. * Giao thức HTTP: 9
Hình 6 – Cấu trúc cơ bản của 1 ứng dụng web
- HTTP là từ viết tắt của Hyper Text Transfer Protocol nghĩa là Giao thức Truyền tải Siêu Văn
Bản được sử dụng trong www. HTTP là 1 giao thức cho phép tìm nạp tài nguyên, chẳng hạn như HTML doc.
- Nó là nền tảng của bất kỳ sự trao đổi dữ liệu nào trên Web và cũng là giao thức giữa client
(thường là các trình duyệt hay bất kỳ loại thiết bị, chương trình nào) và server (thường là các
máy tính trên đám mây). 1 doc hoàn chỉnh được tái tạo từ các doc con khác nhau được fetch –
tìm nạp, chẳng hạn như văn bản, mô tả layout, hình ảnh, video, script, ... * Giao thức HTTPS: 10
Hình 7 – Giao thức HTTPS
- HTTPS (Hypertext Transfer Protocol Secure) là giao thức truyền tải siêu văn bản an toàn.
Thực chất, đây chính là giao thức HTTP nhưng tích hợp thêm Chứng chỉ bảo mật SSL nhằm
mã hóa các thông điệp giao tiếp để tăng tính bảo mật. Có thể hiểu, HTTPS là phiên bản HTTP an toàn, bảo mật hơn. * Giao thức FTP:
- FTP - File Transfer Protocol (Giao thức truyền tải tập tin) được dùng trong việc trao đổi dữ
liệu trong mạng thông qua giao thức TCP/IP, thường hoạt động trên 2 cổng là 20 và 21. Với
giao thức này, các máy client trong mạng có thể truy cập đến máy chủ FTP để gửi hoặc lấy dữ
liệu. Điểm nổi bật là người dùng có thể truy cập vào máy chủ FTP để truyền và nhận dữ liệu dù đang ở xa.
1.2 Sơ lược về socket 1.2.1 Khái niệm socket
Socket là giao diện lập trình ứng dụng mạng được dùng để truyền và nhận dữ liệu trên internet.
Giữa hai chương trình chạy trên mạng cần có một liên kết giao tiếp hai chiều, hay còn gọi là
two-way communication để kết nối 2 process trò chuyện với nhau. Điểm cuối (endpoint) của
liên kết này được gọi là socket.
1.2.2 Chức năng của socket
Chức năng của socket là kết nối giữa client và server thông qua TCP/IP và UDP để truyền và
nhận giữ liệu qua Internet. Giao diện lập trình ứng dụng mạng này chỉ có thể hoạt động khi đã
có thông tin về thông số IP và số hiệu cổng của 2 ứng dụng cần trao đổi dữ liệu cho nhau. 2
ứng dụng cần truyền thông tin phải đáp ứng điều kiện sau thì socket mới có thể hoạt động:
+ 2 ứng dụng có thể nằm cùng trên một máy hoặc 2 máy khác nhau. 11
+ Trong trường hợp 2 ứng dụng cùng nằm trên một máy, số hiệu cổng không được trùng nhau. 1.2.3 Stream socket
Stream Socket hay còn gọi là socket hướng kết nối, là socket hoạt động thông qua giao thức
TCP (Transmission Control Protocol). Stream Socket chỉ hoạt động khi server và client đã kết nối với nhau.
Ưu điểm của Stream Socket:
+ Dữ liệu truyền đi được đảm bảo truyền đến đúng nơi nhận, đúng thứ tự với thời gian nhanh chóng
+ Mỗi thông điệp gửi đi đều có xác nhận trả về để thông báo cho người dùng thông tin
về quá trình truyền tải.
Nhược điểm của Stream Socket:
+ Giữa máy chủ và máy nhận chỉ có 1 IP, nên khi kết nối, 1 máy phải chờ máy còn lại chấp nhận kết nối.
1.3 Tổng quan về ngôn ngữ lập trình Java
Hình 8 – Logo của ngôn ngữ lập trình Java
Java là một ngôn ngữ lập trình được sử dụng rộng rãi để viết mã cho các ứng dụng web. Ngôn
ngữ này là lựa chọn phổ biến của các nhà phát triển trong hơn 2 thập niên. Hiện nay có hàng
triệu ứng dụng Java đang được sử dụng. Java là một ngôn ngữ đa nền tảng, hướng đến đối
tượng, lấy mạng làm trung tâm và có thể được sử dụng như một nền tảng. Đây là một ngôn ngữ
lập trình nhanh, bảo mật, đáng tin cậy dùng để viết mã cho mọi thứ từ ứng dụng di động, phần
mềm doanh nghiệp cho đến các ứng dụng dữ liệu lớn và công nghệ phía máy chủ.
Công dụng chính của Java: vì Java là một ngôn ngữ miễn phí và linh hoạt, nó có thể được dùng
để phát triển các phần mềm cục bộ và phân tán. Một số công dụng phổ biến của Java bao gồm: 12
+ Phát triển trò chơi: Nhiều trò chơi điện tử, trò chơi máy tính và di động nổi tiếng được
phát triển bằng Java. Ngay cả những trò chơi hiện đại được tích hợp công nghệ tiên tiến như
máy học hay thực tế ảo cũng được phát triển bằng công nghệ Java.
+ Điện toán đám mây: Java thường được gọi là ngôn ngữ WORA (Viết một lần, chạy ở
mọi nơi), khiến nó trở thành ngôn ngữ lý tưởng cho các ứng dụng phi tập trung dựa trên đám
mây. Các nhà cung cấp đám mây chọn ngôn ngữ Java để chạy các chương trình trên nhiều nền tảng cơ sở khác nhau.
+ Dữ liệu lớn: Java được dùng cho các công cụ xử lý dữ liệu có thể làm việc với những
tập dữ liệu phức tạp và số lượng dữ liệu thời gian thực khổng lồ.
+ Trí tuệ nhân tạo: Java là một trung tâm thư viện máy học đồ sộ. Sự ổn định và tốc độ
của ngôn ngữ này rất lý tưởng cho việc phát triển ứng dụng trí tuệ nhân tạo như xử lý ngôn ngữ
tự nhiên và deep learning.
+ Internet vạn vật: Java đã được sử dụng cho các cảm biến chương trình và phần cứng
trong thiết bị biên có thể kết nối một cách độc lập với Internet.
Vì sao Java lại trở thành một lựa chọn phổ biến của các nhà phát triển phần mềm hiện đại?
+ Tài nguyên học tập chất lượng cao.
+ Các chức năng và thư viện sẵn có.
+ Sự hỗ trợ tích cực của cộng đồng.
+ Công cụ phát triển chất lượng cao.
+ Độc lập với nền tảng. + Bảo mật. 13 Chương 2
Phân tích thiết kế hệ thống
2.1 Mô hình tương tác giữa Client và Server
Hình 9 – Mô hình Client/Server sử dụng TCP socket
Mô hình Client-Server sử dụng Socket ở chế độ có nối kết (TCP), phân thành 4 giai đoạn như sau: 14
+ Giai đoạn 1: Server tạo Socket, gán số hiệu cổng và lắng nghe yêu cầu nối kết. Server
sẵn sàng phục vụ Client.socket(): Server yêu cầu tạo một socket để có thể sử dụng các dịch vụ của tầng vận chuyển.
bind(): Server yêu cầu gán số hiệu cổng (port) cho socket.
listen(): Server lắng nghe các yêu cầu nối kết từ các client trên cổng đã được gán.
+ Giai đoạn 2: Client tạo Socket, yêu cầu thiết lập một nối kết với Server.
socket(): Client yêu cầu tạo một socket để có thể sử dụng các dịch vụ của tầng
vận chuyển, thông thường hệ thống tự động gán một số hiệu cổng còn rảnh cho socket của Client.
connect(): Client gởi yêu cầu nối kết đến server có địa chỉ IP và Port xác định.
accept(): Server chấp nhận nối kết của client, khi đó một kênh giao tiếp ảo được
hình thành, Client và server có thể trao đổi thông tin với nhau thông qua kênh ảo này.
+ Giai đoạn 3: Trao đổi thông tin giữa Client và Server.
Sau khi chấp nhận yêu cầu nối kết, thông thường server thực hiện lệnh read() và
nghẽn cho đến khi có thông điệp yêu cầu (Request Message) từ client gởi đến.
Server phân tích và thực thi yêu cầu. Kết quả sẽ được gởi về client bằng lệnh write().
Sau khi gởi yêu cầu bằng lệnh write(), client chờ nhận thông điệp kết quả
(ReplyMessage) từ server bằng lệnh read().
+ Giai đoạn 4: Kết thúc phiên làm việc.
Các câu lệnh read(), write() có thể được thưc hiện nhiều lần (ký hiệu bằng hình ellipse).
Kênh ảo sẽ bị xóa khi Server hoặc Client đóng socket bằng lệnh close().
2.2 Yêu cầu hệ thống
2.2.1 Danh sách các tác nhân STT Actor Ý nghĩa
- Người quản lý là người có thể truy cập vào 1 Admin server.
- Người dùng ở đây là người truy cập vào ứng 2 Người dùng dụng phía client.
Bảng 1 – Liệt kê các tác nhân 15
2.2.2 Yêu cầu phi chức năng
- Hệ thống phải đáp ứng được những nhu cầu sau:
+ Hạn chế tối thiểu việc xử lý thủ công.
+ Cho phép cập nhật thông tin kịp thời và nhanh chóng.
+ Các yêu cầu được cập nhật và xử lý trong vòng 5 giây.
+ Hiển thị kết quả tìm kiếm trong vòng 5 giây.
- Hệ thống phải đảm bảo tính bảo mật và an toàn thông tin cho người dùng hệ thống.
2.2.3 Yêu cầu chức năng * Về phía Client: STT Chức năng Mô tả
Khi truy cập vào ứng dụng, màn hình splash xuất 1 Hiển thị Splash hiện.
Đăng nhập vào server bằng cách nhập IP, port và 2 Đăng nhập username.
Sau khi đã đăng nhập vào server, có thể thực 3 Ghi nhớ server
hiện lưu server cho lần đăng nhập tiếp theo.
Hiển thị danh sách người dùng 4 Liệt kê đang
danh sách đang trực tuyến trong server. trực tuyến
Chọn người dùng đang trực tuyến để yêu cầu tạo box chat. 5 Tạo box chat
Người dùng được yêu cầu có quyền đồng ý hoặc từ chối trò chuyện
Trong box chat, người dùng có thể gửi tin nhắn 6 Gửi tin nhắn văn bản văn bản cho nhau.
Trong box chat, người dùng có thể gửi tệp cho 7 Gửi tệp nhau.
Người nhận có thể lưu tệp về máy.
Trong box chat, người dùng có thể gửi một số 8 Gửi emoji emoji đơn giản cho nhau.
Người dùng có thể thoát khỏi box chat để dừng 9
Kết thúc cuộc trò chuyện cuộc trò chuyện. 10 Đăng xuất
Người dùng có thể thoát khỏi ứng dụng.
Bảng 2 – Yêu cầu chức năng phía Client * Về phía Server: STT Chức năng Mô tả 16
Khi truy cập vào server ứng dụng, màn hình 1 Hiển thị Splash splash xuất hiện.
Người quản lý có thể khởi tạo server, bắt đầu 2 Khởi tạo server
lắng nghe các client truy cập vào ứng dụng.
Người quản lý có thể dừng server, kết thúc lắng 3 Dừng server
nghe và không tiếp nhận truy cập.
Thống kê số lượng người dùng Hiển thị số lượng người dùng đang truy cập vào 4 hệ thống hệ thống.
Hiển thị danh sách người dùng Liệt kê danh sách các tài khoản đang truy cập 5 hệ thống
bằng cách hiển thị username. 6 Đăng xuất
Người quản lý có thể thoát khỏi ứng dụng.
Bảng 3 – Yêu cầu chức năng phía Server
2.3 Biểu đồ ca sử dụng
2.3.1 Biểu đồ ca sử dụng phía Client
Hình 10 – Biểu đồ ca sử dụng phía Client
2.3.2 Biểu đồ ca sử dụng phía Server 17
Hình 11 – Biểu đồ ca sử dụng phía Server
2.4 Biểu đồ hoạt động
- Biểu đồ hoạt động cho ca sử dụng “Gửi tin nhắn văn bản”: 18
Hình 12 – Biểu đồ hoạt động cho ca sử dụng gửi tin nhắn văn bản
- Biểu đồ hoạt động cho ca sử dụng “Dừng server”: 19
Hình 13 – Biểu đồ hoạt động cho ca sử dụng dừng server
2.5 Biểu đồ trạng thái
- Biểu đồ trạng thái cho ca sử dụng “Gửi tin nhắn văn bản”:
Hình 14 – Biểu đồ trạng thái cho ca sử dụng gửi tin nhắn văn bản 20
- Biểu đồ trạng thái cho ca sử dụng “Dừng server”:
Hình 15 – Biểu đồ trạng thái cho ca sử dụng dừng server
2.6 Biểu đồ trình tự
- Biểu đồ trình tự cho ca sử dụng “Gửi tin nhắn văn bản”:
Hình 16 – Biểu đồ trình tự cho ca sử dụng gửi tin nhắn văn bản
- Biểu đồ trình tự cho ca sử dụng “Dừng server”: 21
Hình 17 – Biểu đồ trình tự cho ca sử dụng dừng server
2.7 Biểu đồ giao tiếp
- Biểu đồ giao tiếp cho ca sử dụng “Gửi tin nhắn văn bản”:
Hình 18 – Biểu đồ giao tiếp cho ca sử dụng gửi tin nhắn văn bản
- Biểu đồ giao tiếp cho ca sử dụng “Dừng server”:
Hình 19 – Biểu đồ giao tiếp ca sử dụng dừng server 22 Chương 3 Chương trình demo
3.1 Chương trình phía Client 3.1.1 Màn hình Splash
- Sau khi khởi động chương trình phía Client, ứng dụng sẽ xuất hiện Splash chào mừng người
dùng đến với ứng dụng.
Hình 20 – Màn hình Splash phía client
- Về mặt công nghệ, sử dụng vòng lặp for kết hợp với thuộc tính Thread.sleep(20) để tạo hiệu
ứng loading đẹp mắt giúp tăng trải nghiệm người dùng.
3.1.2 Màn hình kết nối Client đến Server
- Người dùng có thể nhập địa chỉ IP và Port của Server để kết nối. 23
Hình 21 – Màn hình kết nối client đến server
- Ngoài ra, người dùng bắt buộc phải nhập username để phân biệt với các người dùng khác
đang truy cập vào Server. Người dùng sẽ bị từ chối truy cập nếu username trùng với một người
khác đã truy cập vào trước.
Hình 22 – Bị từ chối truy cập vì trùng username
3.1.3 Màn hình chính của Client
- Màn hình chính của client bao gồm:
+ Hiển thị username của người dùng đã đặt. 24
+ Khung thông tin ở góc phải gồm: địa chỉ IP và port của server, port của client.
+ Danh sách các user khác đang kết nối đến server.
Hình 23 – Màn hình chính của client
- Ngoài ra, còn có chức năng Save Server, giúp người lưu thông tin của server hiện tại để truy
cập nhanh trong những lần kết nối tiếp theo. 25
Hình 24 – Màn hình kết nối client đến server sau khi thực hiện lưu server
3.1.4 Màn hình hộp chat
- Để thực hiện chat, tại màn chính ở phần danh sách các user đang hoạt động, ta chọn vào user
cần tạo boxchat. Để bắt đầu cuộc trò chuyện, user được chọn phải xác nhận tham gia vào boxchat.
Hình 25 – Xác nhận lời mời tham gia vào boxchat 26
Hình 26 – Boxchat được tạo ra
- Boxchat có một số tính năng sau:
+ Gửi tin nhắn văn bản: người dùng nhập nội dung cần nhắn tại textbox ở cuối boxchat
sau đó nhấn vào icon “Gửi” màu xanh hoặc nhấn phím “Enter” trên bàn phím để gửi tin nhắn.
Tin nhắn sau khi gửi sẽ được định dạng: Nội dung tin nhắn.
Thời gian gửi tin nhắn.
Tin nhắn gửi đi có nền màu xanh, căn lề phải.
Tin nhắn nhận được có nền màu xám, căn lề trái. 27
Hình 27 – Gửi tin nhắn văn bản
+ Gửi tệp: người dùng nhấn vào icon “tệp” màu đen, sau đó lựa chọn tệp trong máy và tiến hành gửi. 28
Hình 28 – Gửi tệp
+ Gửi emoij: người dùng có thể gửi emoij bằng cách nhấn trực tiếp vào chúng. Boxchat
hiện có 5 emoij: like, love, smile, sad, angry. 29
Hình 29 – Gửi emoij
3.2 Chương trình phía Server 3.2.1 Màn hình Splash
- Sau khi khởi động chương trình phía Server, ứng dụng sẽ xuất hiện Splash chào mừng người
quản lý đến với ứng dụng. 30
Hình 30 – Màn hình splash phía server
- Về mặt công nghệ, sử dụng vòng lặp for kết hợp với thuộc tính Thread.sleep(20) để tạo hiệu
ứng loading đẹp mắt giúp tăng trải nghiệm người dùng. 31
3.2.2 Màn hình chính của Server
Hình 31 – Màn hình chính của server
- Màn hình chính của server bao gồm:
+ Thông tin server gồm port và địa chỉ IP, có thể thay đổi. Dùng để cung cấp cho các
client truy cập vào hệ thống.
Hình 32 – Thông tin server 32
+ Hiển thị trạng thái server (ON/OFF) và số lượng user đang truy cập vào hệ thống.
Hình 33 – Thống kê của server
+ Chức năng Start/Stop server, ở trạng thái start thì server sẽ mở cổng lắng nghe cho
phép các client truy cập. Ngược lại, ở trang thái stop thì server sẽ ngừng hoạt động.
Hình 34 – Khởi động/Ngừng server
+ Liệt kê danh sách các user đang truy cập vào hệ thống.
Hình 35 – Danh sách user đang trực tuyến 33
Kết luận và hướng phát triển 1 Kết luận
Qua đề tài nghiên cứu Đồ án môn học Lập trình mạng, em đã đạt được một số kết quả sau: + Về mặt lý thuyết:
Tìm hiểu được những kiến thức cơ bản về lập trình mạng.
Áp dụng được mô hình mạng Client/Server, giao thức mạng TCP vào sản phẩm. + Về mặt thực nghiệm:
Thiết kế thành công ứng dụng chat theo mô hình Client/Server.
Ứng dụng cho phép người dùng thực hiện các chức năng như: tạo boxchat, gửi văn
bản, gửi tệp, gửi emoij, ... 2 Hướng phát triển
Tuy đã đạt được một số kết quả nhưng do thời gian hạn hẹp và kiến thức còn có giới hạn nên
đề tài nghiên cứu của chúng em vẫn còn nhiều hạn chế, vì vậy chúng em đề xuất một số hướng
phát triển trong tương lai như sau:
+ Phát triển ứng dụng đảm bảo tính thẩm mỹ và tăng trải nghiệm người dùng.
+ Trau dồi kĩ năng lập trình để phát triển thêm nhiều module chức năng quan trọng và thiết
thực với nhu cầu xã hội. 34
TÀI LIỆU THAM KHẢO
1. https://vku.udn.vn/hinh-anh 2. https://icons8.com/icons/ 3. https://www.youtube.com/ 4. https://stackoverflow.com/
5. https://vi.wikipedia.org/wiki/ 35
Document Outline
- Đà Nẵng, tháng 10 năm 2022
- Đà Nẵng, tháng 10 năm 2022 (1)
- Đà Nẵng, tháng 10 năm 2022 (2)
- Chương 1 Cơ sở lý thuyết
- 1.1 Sơ lược về lập trình mạng
- 1.1.1 Khái niệm lập trình mạng
- 1.1.2 Một số mô hình mạng
- 1.1.3 Một số mô hình ứng dụng mạng
- 1.1.4 Một số giao thức mạng
- 1.2 Sơ lược về socket
- 1.2.1 Khái niệm socket
- 1.2.2 Chức năng của socket
- 1.2.3 Stream socket
- 1.3 Tổng quan về ngôn ngữ lập trình Java
- 1.1 Sơ lược về lập trình mạng
- Chương 2 Phân tích thiết kế hệ thống
- 2.1 Mô hình tương tác giữa Client và Server
- 2.2 Yêu cầu hệ thống
- 2.2.1 Danh sách các tác nhân
- 2.2.2 Yêu cầu phi chức năng
- 2.2.3 Yêu cầu chức năng
- 2.3 Biểu đồ ca sử dụng
- 2.3.1 Biểu đồ ca sử dụng phía Client
- 2.3.2 Biểu đồ ca sử dụng phía Server
- 2.4 Biểu đồ hoạt động
- 2.5 Biểu đồ trạng thái
- 2.6 Biểu đồ trình tự
- 2.7 Biểu đồ giao tiếp
- Chương 3 Chương trình demo
- 3.1 Chương trình phía Client
- 3.1.1 Màn hình Splash
- 3.1.2 Màn hình kết nối Client đến Server
- 3.1.3 Màn hình chính của Client
- 3.1.4 Màn hình hộp chat
- 3.2 Chương trình phía Server
- 3.2.1 Màn hình Splash
- 3.2.2 Màn hình chính của Server
- 3.1 Chương trình phía Client
- Kết luận và hướng phát triển
- 1 Kết luận
- 2 Hướng phát triển
- TÀI LIỆU THAM KHẢO