CHƯƠNG I: TỔNG QUAN 1.1 Tổng quan đồ ánTổng quan của đề tài "Lập trình xây dựng chat room TCP sử dụng WindowsSocket" để tạo ra một ứng dụng chat room trực tuyến, cho phép nhiều người dùn
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN
THÔNG VIỆT – HÀN KHOA KỸ THUẬT MÁY TÍNH VÀ ĐIỆN TỬ
ĐỒ ÁN LẬP TRÌNH MẠNG
ĐỀ TÀI:
LẬP TRÌNH XÂY DỰNG CHAT ROOM TCP
SỬ DỤNG WINDOWS SOCKET
Trang 2Sinh viên thực hiện: Lưu Quang Vũ -
THÔNG VIỆT – HÀN KHOA KỸ THUẬT MÁY TÍNH VÀ ĐIỆN TỬ
ĐỒ ÁN LẬP TRÌNH MẠNG
ĐỀ TÀI:
Trang 3LẬP TRÌNH XÂY DỰNG CHAT ROOM TCP
SỬ DỤNG WINDOWS SOCKET
Trần Văn Vững - 21CE131 Nguyễn Như Ý - 21CE066
Giảng viên hướng dẫn:
TS Hoàng Hữu Đức
Đà Nẵng, tháng 1 năm 2024
Trang 4LỜI CẢM ƠN
Trên thực tế không có sự thành công nào mà không gắn liền với sự hỗ trợ, giúp đỡ
dù ít hay nhiều, dù trực tiếp hay gián tiếp của người khác Trong suốt thời gian từ khi bắtđầu học tập ở giảng đường đại học cho đến nay, chúng em đã nhận được rất nhiều sự quantâm, giúp đỡ của quý thầy cô, gia đình và bạn bè
Với lời biết ơn sâu sắc nhất, chúng em xin gửi đến thầy Hoàng Hữu Đức ở TrườngĐại Học CNTT & TT Việt - Hàn cùng với tri thức và tâm huyết của mình để truyền đạt lạikiến thức quý báu cho chúng em trong suốt thời gian học tập tại trường Người đã tận tìnhhướng dẫn, giúp đỡ cho chúng em hoàn thành
Đồ án này được thực hiện trong khoảng thời gian 3 tháng cùng với sự hạn chế vềkiến thức, do đó không tránh khỏi những thiếu sót, chúng em rất mong nhận được những
ý kiến đóng góp quý báu của quý thầy cô và các bạn học cùng lớp để đồ án của chúng emđược hoàn thiện hơn
Nhóm em trân trọng cảm ơn !
Nhóm sinh viên
Lưu Quang VũTrần Văn VữngNguyễn Như Ý
Trang 5PHẦN MỞ ĐẦU
Trong thời đại công nghệ thông tin phát triển như hiện nay, các ứng dụngchat room đang ngày càng trở nên phổ biến Chúng cho phép người dùng có thểgiao tiếp, trao đổi thông tin với nhau một cách dễ dàng, thuận tiện
Một chat room hoạt động dựa trên nguyên tắc kết nối giữa các client với mộtserver Khi một client kết nối với server, nó sẽ được cấp một mã nhận dạng Cácclient có thể gửi và nhận tin nhắn từ nhau thông qua server
Trong đề tài này, chúng ta sẽ tìm hiểu cách lập trình một chat room sử dụnggiao thức TCP và Windows Socket Giao thức TCP là một giao thức truyền thôngtin đáng tin cậy, đảm bảo rằng dữ liệu được truyền đi sẽ không bị mất hoặc hưhỏng Windows Socket là một API cho phép lập trình viên tạo và sử dụng các kếtnối socket trên hệ điều hành Windows
Để bắt đầu, chúng ta sẽ tìm hiểu về các khái niệm cơ bản của giao thức TCP
và Windows Socket Sau đó, chúng ta sẽ xây dựng một chat room đơn giản có thể
hỗ trợ các chức năng cơ bản như gửi và nhận tin nhắn
Trang 6MỤC LỤ
C
CHƯƠNG I: TỔNG QUAN 1
1.1 Tổng quan đồ án 1
1.2 Nhiệm vụ đồ án 2
1.3 Mục tiêu đồ án 2
1.4 Phạm vi nghiên cứu 3
1.5 Cấu trúc đồ án 4
CHƯƠNG II: CƠ SỞ LÝ THUYẾT 5
2.1 Giao thức TCP/IP 5
2.1.1 Mô hình TCP/IP là gì? 5
2.1.2 Chức năng và cách thức hoạt động của mô hình TCP/IP 5
2.1.3 Ưu và nhược điểm của giao thức TCP/IP 7
2.2 Mô hình Client-Server 7
2.2.1 Định nghĩa 7
2.2.3 Ưu và nhược điểm của mô hình 8
2.3 Windows Socket 9
2.3.1 Windows Socket là gì? 9
2.3.2 Windows Socket hoạt động như thế nào? 10
2.4 Công nghệ áp dụng 11
2.4.1 Ngôn ngữ C# 11
2.4.2 Ngôn ngữ C++ 12
2.4.3 Ứng dụng Visual Studio 2022 13
CHƯƠNG III: TRIỂN KHAI XÂY DỰNG CHƯƠNG TRÌNH 15
3.1 Nguyên lý hoạt động 15
3.2 Kết quả chương trình 17
KẾT LUẬN 20
Trang 7i Kết quả đạt được 20
ii Sự cống hiến của nhóm 20
iii Hướng phát triển 20
TÀI LIỆU THAM KHẢO 22
Trang 8DANH MỤC HÌNH ẢNH
Hình 2 1 Các tầng mô hình TCP/IP 5
Hình 2 2 Mô hình Client-Server 8
Hình 2 3 Hình ảnh C# 11
Hình 2 4 Hình ảnh C++ 12
Hình 2 5 Ứng dụng Visual Studio 2022 14
Hình 3 1 Nguyên lý hoạt động Server 15
Hình 3 2 Nguyên lý hoạt động Client 16
Hình 3 3 Server bắt đầu lắng nghe kết nối từ client 17
Hình 3 4 Server yêu cầu nhập tên 17
Hình 3 5 Server chấp nhận kết nối và thông báo cho tất cả Client 18
Hình 3 6 Khi client nhắn tin cho nhau 18
Hình 3 7 Khi client thoát kết nối 19
Trang 9CHƯƠNG I: TỔNG QUAN 1.1 Tổng quan đồ án
Tổng quan của đề tài "Lập trình xây dựng chat room TCP sử dụng WindowsSocket" để tạo ra một ứng dụng chat room trực tuyến, cho phép nhiều người dùng kết nối
và giao tiếp với nhau thông qua mạng TCP/IP Đề tài này kết hợp giữa lập trình mạng,giao thức TCP/IP và sử dụng Windows Socket để xây dựng một môi trường truyền thôngtương tác Đề tài "Lập trình xây dựng chat room TCP sử dụng Windows Socket" tập trungvào việc tạo ra một ứng dụng chat room trực tuyến sử dụng giao thức TCP/IP vàWindows Socket Đây là một ứng dụng mạng cho phép nhiều người dùng kết nối và giaotiếp với nhau thông qua mạng TCP/IP
Giao thức TCP/IP là một trong những giao thức mạng phổ biến nhất và được sửdụng rộng rãi trên Internet Nó cung cấp một cơ chế tin cậy để truyền dữ liệu giữa cácmáy tính trong mạng Windows Socket, hay còn gọi là Winsock, là một giao diện lậptrình ứng dụng (API) được cung cấp bởi hệ điều hành Windows để phát triển ứng dụngmạng Để xây dựng ứng dụng chat room TCP sử dụng Windows Socket, bạn sẽ cần thựchiện các bước sau:
- Tạo một máy chủ (server) sử dụng Windows Socket để lắng nghe các kết nối đến
từ các máy khách (clients)
- Xác định giao thức truyền thông giữa máy chủ và máy khách Trong trường hợpnày, giao thức TCP/IP sẽ được sử dụng để đảm bảo tính tin cậy và truyền dữ liệutheo thứ tự
- Thiết kế và triển khai giao diện người dùng cho ứng dụng chat room, cho phépngười dùng nhập tin nhắn và xem tin nhắn từ các thành viên khác trong phòngchat
- Xử lý các yêu cầu và dữ liệu từ máy khách trên máy chủ, và phản hồi lại các yêucầu đó để duy trì giao tiếp giữa các thành viên trong chat room
1
Trang 10- Quản lý và theo dõi danh sách các thành viên trong phòng chat, bao gồm việc theodõi trạng thái trực tuyến và việc gửi tin nhắn đến tất cả các thành viên trong phòng.Việc xây dựng một ứng dụng chat room TCP sử dụng Windows Socket đòi hỏikiến thức về lập trình mạng, giao thức TCP/IP và sử dụng API Windows Socket Bạn cầnhiểu về cách thiết lập kết nối mạng, gửi và nhận dữ liệu qua TCP/IP, và xử lý các sự kiệnmạng.
1.2 Nhiệm vụ đồ án
- Xây dựng ứng dụng chat room trực tuyến: xây dựng một ứng dụng chat room đơngiản nhưng hiệu quả, cho phép người dùng trò chuyện và gửi tin nhắn với nhauthông qua mạng internet Ứng dụng sẽ cung cấp một giao diện đơn giản và thânthiện cho người dùng, đồng thời hỗ trợ việc kết nối nhanh chóng và truyền tin nhắnmột cách tin cậy
- Sử dụng giao thức TCP/IP: Để thiết lập kết nối và truyền dữ liệu qua mạng, chúng
ta sẽ sử dụng giao thức TCP/IP Giao thức này cung cấp một cơ chế tin cậy đểtruyền dữ liệu giữa các máy tính trong mạng internet Chúng em sẽ tìm hiểu vềcách sử dụng giao thức TCP/IP để xây dựng một hệ thống chat room ổn định và tincậy
- Sử dụng Windows Socket: Đối với việc triển khai giao thức TCP/IP trong ứngdụng chat room, chúng ta sẽ sử dụng Windows Socket (Winsock) Winsock là mộtgiao diện lập trình ứng dụng (API) được cung cấp bởi hệ điều hành Windows để
hỗ trợ việc phát triển ứng dụng mạng dựa trên giao thức TCP/IP Chúng ta sẽ tìmhiểu về cách sử dụng Winsock để tạo và quản lý các kết nối mạng trong ứng dụngchat room của chúng ta
1.3 Mục tiêu đồ án
- Tạo ra một ứng dụng chat room trực tuyến, cho phép nhiều người dùng kết nối vàgiao tiếp với nhau qua mạng TCP/IP
2
Trang 11- Áp dụng kiến thức về lập trình mạng và giao thức TCP/IP để xây dựng cơ chế kếtnối và truyền dữ liệu giữa server và client.
- Sử dụng Windows Socket để tận dụng các chức năng và công cụ cung cấp bởi hệđiều hành Windows trong việc xây dựng chat room TCP
1.4 Phạm vi nghiên cứu
- Tìm hiểu về giao thức TCP/IP: Trong phần này, bạn có thể nghiên cứu chi tiết về
giao thức TCP/IP và các thành phần cơ bản của nó Điều này bao gồm tìm hiểu vềđịa chỉ IP, cách các gói dữ liệu được chia thành các gói TCP và UDP, cách phânmảnh và xếp hạng gói tin, quy trình thiết lập và giải phóng kết nối TCP, và cáckhái niệm quan trọng khác liên quan đến giao thức TCP/IP
- Nghiên cứu về Windows Socket: Trong phần này, bạn có thể tìm hiểu chi tiết về
Windows Socket (Winsock) và cách sử dụng nó để phát triển ứng dụng mạng trên
hệ điều hành Windows Nghiên cứu các hàm và giao thức mạng được hỗ trợ bởiWinsock, bao gồm khởi tạo và phân giải địa chỉ, tạo và quản lý socket, thiết lập kếtnối mạng, gửi và nhận dữ liệu, và các phương pháp khác liên quan đến lập trìnhmạng trên Windows
- Thiết kế và triển khai chat room: Trong phần này, bạn có thể thiết kế kiến trúc và
cấu trúc dữ liệu cho chat room sử dụng TCP Điều này bao gồm việc xác định cáchcác người dùng sẽ kết nối và tương tác với chat room, cách quản lý danh sáchngười dùng và kết nối, và cách phân tách và đóng gói tin nhắn giữa các ngườidùng Bạn cũng có thể xem xét việc thực hiện các tính năng bổ sung như gửi tinnhắn đa phương tiện (bao gồm hình ảnh và tệp đính kèm) hoặc tích hợp hệ thốngphân quyền và quản lý người dùng
- Giao diện người dùng: Trong phần này, bạn có thể thực hiện phát triển giao diện
người dùng cho chat room Bạn có thể sử dụng các công nghệ như WinForms,WPF, hoặc các thư viện GUI khác để tạo các thành phần giao diện như cửa sổ chat,danh sách người dùng, các nút và điều khiển tương tác, và các yếu tố thiết kế khác
3
Trang 12Giao diện người dùng cần cung cấp các chức năng cơ bản như đăng nhập, gửi vànhận tin nhắn, hiển thị danh sách người dùng và các thao tác quản lý người dùng.
Chương 3: TRIỂN KHAI XÂY DỰNG CHƯƠNG TRÌNH
Nguyên lý hoạt động, viết chương trình Server, chương trình Client, kết quảchương trình
KẾT LUẬN
Kết quả đạt được, sự cống hiến của nhóm, hướng phát triển
4
Trang 13CHƯƠNG II: CƠ SỞ LÝ THUYẾT
2.1 Giao thức TCP/IP
2.1.1 Mô hình TCP/IP là gì?
TCP/ IP (Transmission Control Protocol/ Internet Protocol - Giao thức điều khiểntruyền nhận/ Giao thức liên mạng), là một bộ giao thức trao đổi thông tin được sử dụng đểtruyền tải và kết nối các thiết bị trong mạng Internet Để máy khách và máy chủ có thểgiao tiếp được với nhau thì giữa chúng phải có một chuẩn nhất định, và chuẩn đó đượcgọi là giao thức
Cụ thể hơn, TCP/IP chỉ rõ cho chúng ta cách thức đóng gói thông tin (còn được gọi
là gói tin), được gửi và nhận bởi các máy tính có kết nối với nhau.Nội dung gói tin baogồm các thành phần sau: địa chỉ nhận, địa chỉ gửi; dữ liệu, độ dài; thông tin kiểm soát lỗi
Trang 14Một mô hình TCP/IP tiêu chuẩn bao gồm 4 lớp được chồng lên nhau, bắt đầu từtầng thấp nhất là Tầng vật lý (Physical) → Tầng mạng (Network) → Tầng giao vận(Transport) và cuối cùng là Tầng ứng dụng (Application).
Tầng 4 - Tầng Ứng dụng (Application)
Đây là lớp giao tiếp trên cùng của mô hình Đúng với tên gọi, tầng Ứng dụng đảmnhận vai trò giao tiếp dữ liệu giữa 2 máy khác nhau thông qua các dịch vụ mạng khácnhau (duyệt web, chat, gửi email, một số giao thức trao đổi dữ liệu: SMTP, SSH, FTP, )Tầng 3 - Tầng Giao vận (Transport)
Chức năng chính của tầng 3 là xử lý vấn đề giao tiếp giữa các máy chủ trong cùngmột mạng hoặc khác mạng được kết nối với nhau thông qua bộ định tuyến
Khi truyền dữ liệu, quá trình tiến hành từ tầng trên xuống tầng dưới, qua mỗi tầng
dữ liệu được thêm vào thông tin điều khiển gọi là Header Khi nhận dữ liệu thì quá trìnhxảy ra ngược lại, dữ liệu được truyền từ tầng dưới lên và qua mỗi tầng thì phần headertương ứng sẽ được lấy đi và khi đến tầng trên cùng thì dữ liệu không còn phần headernữa
Ở đây, IP có vai trò quan trọng, nó cho phép các gói tin được gửi đến đích đã địnhsẵn, bằng cách thêm các thông tin dẫn đường (chính là Header) vào các gói tin để các góitin được đến đúng đích đã định sẵn ban đầu
6
Trang 15Giao thức TCP đóng vai trò kiểm tra và đảm bảo sự an toàn cho mỗi gói tin khi điqua mỗi trạm Trong quá trình này, nếu giao thức TCP nhận thấy gói tin bị lỗi, một tínhiệu sẽ được truyền đi và yêu cầu hệ thống gửi lại một gói tin khác.
2.1.3 Ưu và nhược điểm của giao thức TCP/IP
- Nhược điểm:
+ Khó quản lý, cài đặt khá cầu kỳ, phức tạp
+ Tầng giao vận đôi khi không đảm bảo được việc phân phối các gói tin, dữliệu
+ TCP/IP gồm các giao thức cố định, rất khó để thay thế
+ Bên cạnh đó, TCP/IP cũng không có sự tách biệt giữa khái niệm với giaodiện Với những trang web mới trong mạng mới, TCP/IP là giao thức chưathực sự hiệu quả
+ TCP/IP dễ bị tấn công và từ chối dịch vụ
7
Trang 162.2 Mô hình Client-Server
2.2.1 Định nghĩa:
Client Server là mô hình mạng máy tính gồm có 2 thành phần chính đó là máykhách (Client) và máy chủ (Server)
Server chính là nơi giúp lưu trữ tài nguyên cũng như cài đặt các chương trình dịch
vụ theo đúng như yêu cầu của Client Ngược lại, Client bao gồm máy tính cũng như cácloại thiết bị điện tử nói chung sẽ tiến hành gửi yêu cầu đến Server
Hình 2 2 Mô hình Client-Server
Hiểu một cách đơn giản thì Client là nguồn yêu cầu và Server phải phục vụ theonó
- Client: Client chính là khách hàng sử dụng dịch vụ Nó có thể là một tổchức hay cá nhân cụ thể nào đó Trong Client Server thì Client chính là mộtmáy tính (Host) Chúng có khả năng nhận thông tin từ nhà cung cấp và sửdụng dịch vụ cụ thể (Server)
- Server: Server là từ dùng để nói về một máy chủ hoặc một phương tiệnđược sử dụng để phục vụ các dịch vụ nào đó Chúng có chức năng là cung
8
Trang 17cấp các thông tin (dữ liệu) cho một dịch vụ cụ thể nào đó hoặc quyền truycập đối với dịch vụ Server chấp nhận tất cả các yêu cầu hợp lệ từ mọi nơikhác nhau trên Internet, sau đó trả kết quả về máy tính đã gửi yêu cầu đó
2.2.3 Ưu và nhược điểm của mô hình:
- Ưu điểm:
+ Tập trung: khả năng kiểm soát tập trung (Centralization) đã được tích hợp
sẵn Admin có thể toàn quyền quản lý cũng như điều hành mọi việc
+ Bảo mật: tất cả các dữ liệu đều sẽ được bảo vệ một cách tối đa nhờ vào hệ
thống kiến trúc tập trung của mạng
+ Khả năng mở rộng: Mô hình mạng kết nối Client Server có khả năng mở
rộng vô cùng tốt Chỉ cần người dùng cần sử dụng bất cứ lúc nào thì họcũng có thể tăng được số lượng tài nguyên của mình
+ Khả năng truy cập: Hoàn toàn không hề có sự phân biệt giữa các vị tríhay nền tảng với nhau Tất cả mọi Client đều có khả năng đăng nhập đượcvào hệ thống mạng máy tính
- Nhược điểm:
+ Tắc nghẽn lưu lượng: Trong trường hợp có quá nhiều Client tạo request từ
cùng một Server thì nó có thể sẽ làm cho kết nối chậm hơn
+ Độ bền: Client Server là mạng tập trung chính vì thế, khi Server chính xảy
ra sự cố hoặc bị nhiễu thì cũng đồng nghĩa với việc toàn bộ hệ thống mạng
sẽ bị gián đoạn
+ Chi phí: được sử dụng để thiết lập và bảo trì Server trong Client Server
thường sẽ khá cao
9
Trang 18+ Bảo trì: Khi các Server thực hiện triển khai để làm việc thì nó cũng sẽ hoạt
động một cách không ngừng nghỉ Điều này đồng nghĩa với việc chúng tacần phải quan tâm đến việc bảo trì hệ thống đúng mức
+ Tài nguyên: Một điều mà chúng ta rất cần phải lưu ý đó chính là không
phải tất cả tài nguyên hiện có trên Server đều sử dụng được
2.3 Windows Socket
2.3.1 Windows Socket là gì?
Windows Socket (Winsock) là một ứng dụng (API) cài đặt giao diện được sử dụng
để phát triển mạng ứng dụng trên hệ điều hành Windows Nó cung cấp các chức năng vàcấu hình để tạo, kết nối, truyền tải và nhận dữ liệu qua mạng thông qua giao thức TCP/IPhoặc UDP.Một chức năng khác của socket là giúp các tầng TCP hoặc TCP Layer địnhdanh ứng dụng mà dữ liệu sẽ được gửi tới thông qua sự ràng buộc với một cổng port (thểhiện là một con số cụ thể), từ đó tiến hành kết nối giữa Client và Server
2.3.2 Windows Socket hoạt động như thế nào?
Windows Socket (Winsock) hoạt động bằng cách cung cấp một giao diện lập trìnhứng dụng (API) cho phép lập trình viên tạo, kết nối, truyền và nhận dữ liệu qua mạng trên
hệ điều hành Windows Dưới đây là quá trình hoạt động cơ bản của Winsock:
- Khởi tạo Winsock: Trước khi sử dụng bất kỳ chức năng Winsock nào, ứng dụngcần khởi tạo Winsock bằng cách gọi hàm WSAStartup() Hàm này thông báo cho
hệ điều hành rằng ứng dụng muốn sử dụng Winsock và trả về thông tin về phiênbản Winsock hiện tại
- Tạo socket: Sau khi khởi tạo, ứng dụng có thể tạo socket bằng cách gọi hàmsocket() Một socket là một đối tượng được sử dụng để gửi và nhận dữ liệu quamạng Hàm socket() sẽ trả về một tham chiếu đến socket mới được tạo
10