Multicast là một phương pháp truyền thông mạng cho phép một máy chủ hoặc nguồn dữ liệu gửi đữ liệu đến một nhóm người nghe các thiết bị truyền dẫn trong mạng, thay vì phải gửi riêng lẻ đ
Trang 1
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HCM
BAO CAO DO AN
MON LAP TRINH MANG MAY TINH
Socket Multicast
Giảng viên hướng dẫn: Ths Đoàn Khải Hiếu
Sinh viên thực hiện:
Trang 2Chuong 1: TONG QUAN DO AN 1.1 Mục đích
Mục đích của socket multicasting (gọi tắt là socket multicast) là cho phép gửi
dữ liệu từ một nguồn đến nhiều đích (multicast group) một cách hiệu quả trong mạng
Multicast là một phương pháp truyền thông mạng cho phép một máy chủ hoặc nguồn
dữ liệu gửi đữ liệu đến một nhóm người nghe (các thiết bị truyền dẫn) trong mạng,
thay vì phải gửi riêng lẻ đến từng thiết bị
Trang 3Chương 2: CƠ SỞ LÝ THUYÉT 2.1 Kiến trúc hệ thống
Kiến trúc hệ thống sử dụng socket multicast đề kết nối với nhau thông qua server
thường bao gồm các thành phần chính sau:
Server: Server là máy chủ chính trong hệ thống Nó có nhiệm vụ quản lý và phân
phối đữ liệu đến các client Server sử dung socket multicast dé gui dit liệu đến một
nhóm multicast cụ thé
Client: Các client là các máy tính hoặc thiết bị mà bạn muốn kết nối với server để
nhận dữ liệu Các client cũng sử dụng socket multicast đề tham gia vào nhóm
multicast, từ đó nhận dữ liệu từ server
Multicast Group: Đây là một nhóm các máy tính (client) được nhóm lại để nhận dữ
liệu từ server Server gửi dữ liệu đến địa chỉ IP multicast cụ thể, và tất cả các client
trong nhóm multicast này sẽ nhận được dữ liệu Địa chỉ IP multicast thường là một
địa chỉ IP đặc biệt thuộc vào phạm vị IP multicast
Socket Multicast: Server và client sử dụng socket multicast để tham gia vào nhóm
multicast va truyền đữ liệu Socket multicast sử dụng giao thức UDP đề gửi dữ liệu
từ server đến các client trong nhóm multicast
Router: Router trong mạng đảm bảo rằng gói đữ liệu multicast được định tuyến đúng
cách từ server đến tất cả các client trong nhóm multicast Router phải hỗ trợ giao
thức IP multicast để có thê chuyên tiếp gói dữ liệu
Các bước cơ bản trong quá trình sử dụng socket multicast để kết nối với nhau thông
Trang 4qua server bao gôm:
Server khoi tao m6t socket multicast va gan no v6i dia chi IP multicast cụ thé
Client cũng khởi tạo một socket multicast và tham gia vào nhóm multicast bang cach
sử dụng địa chỉ IP multicast
Server gửi đữ liệu thông qua socket multicast, và tất cả các client trong nhóm
multicast nhan duoc dữ liệu này
Router đảm bảo gói dữ liệu multicast được chuyền tiếp đúng cách từ server đến các
client
Kiến trúc này cho phép nhiều client kết nối với server thong qua socket multicast
một cách hiệu quả, đặc biệt trong các tình huồng cần gửi đữ liệu đến nhiều người
dùng cùng một lúc
2.2 Sơ đồ cấu trúc
Dưới đây là sơ đồ cấu trúc minh họa và chỉ tiết các thành phân, tương tác giữa chúng:
Trang 5Client: Cac may tính hoặc thiết bi khác trong hệ thống, nhận dữ liệu từ server
thông qua socket multIcast
Router: Router trong mạng đảm bảo định tuyến gói đữ liệu multicast từ server đến
các client trong nhóm multicast Router phai hỗ trợ giao thức IP multicast
Socket Multicast: Ca server và client đều sử dung socket multicast dé tham gia
vào nhóm multIcast và truyền dữ liệu
Sơ đồ này thể hiện cấu trúc cơ bản của việc sử dung socket multicast dé gửi dữ
liệu từ server đến nhiều client thông qua mạng Gói đữ liệu multicast được gửi từ
server và được định tuyến qua router đến tất cả các client trong nhóm multicast
2.3 Chi tiết triển khai
Server: Khởi tạo socket multicast và gửi dữ liệu Server cần khởi tạo một socket UDP và liên kết nó với một địa chỉ IP và công cụ thê
Server sử dụng socket này dé gửi dữ liệu đến một địa chỉ IP multicast cụ thé
Trước khi gửi đữ liệu, server cần tham gia vào nhóm multicast bang cach str dụng địa chỉ IP multicast Điều này cho phép server gửi đữ liệu đến nhóm này
Trang 6Client: Tham g1a vào nhóm multicast và nhận đữ liệu Client cần khởi tạo một socket UDP riêng và liên kết nó với cổng mà server
đã sử dụng
Sau đó, client sử dụng socket này đề tham gia vào nhóm multicast bằng cách
sử dụng địa chỉ IP multicast mà server đã sử dụng
Khi client đã tham gia vào nhóm multicast, nó có thé nhận dữ liệu gửi từ server thông qua socket này
Router: Đảm bảo định tuyến đữ liệu multicast Router trong mang đảm bảo rằng gói dữ liệu multicast được chuyên tiếp đúng cách từ server đến tất cả các client trong nhóm multicast
Điều này đòi hỏi router phải hỗ trợ giao thức IP multicast và được cấu hình sao cho định tuyến dit ligu multicast dung cach
2.4 Chức năng của Server — CHent
Chức năng của server và client trong việc kết nói thông qua socket multicast phụ
thuộc vào yêu cầu cụ thê của ứng dụng và quá trình trao đối thông tin giữa ho Server
là nguồn chính của dữ liệu và quản lý nhóm multicast, trong khi client nhận dữ liệu
và có thê thực hiện xử lý đữ liệu hoặc tương tác với server băng cách gửi yêu cầu
hoặc phản hồi
2.4.1 Máy chủ (Server)
Phát đữ liệu: Server là nguồn đữ liệu chính trong hệ thống Chức năng chính của
server là phát dữ liệu hoặc thông tin đến tat ca cac client trong nhom multicast Server
sử dung socket multicast dé gửi dữ liệu đến địa chỉ IP multicast cụ thể mà tất cả client
đang tham gia
Quản lý nhóm multicast: Server cần tham gia vào nhóm multicast bằng cách sử
dung dia chi IP multicast cu thé Server citing có thê thực hiện việc quản lý và cập
nhật nhóm multicast, bao gồm việc thêm client mới vào nhóm hoặc loại bỏ client ra
khỏi nhóm
Xử lý yêu cầu từ client: Server có thể cung cấp các địch vụ phụ khác cho client,
Trang 7bên cạnh việc phát dữ liệu Ví dụ, server có thê xử lý yêu câu từ client, cung cap
thông tin đặc biệt hoặc thực hiện các tính toán phía máy chủ
2.4.2 Máy khách (Client)
Nhận dữ liệu: Chức năng chính của client là tham gia vao nhom multicast va nhận dữ liệu từ server thông qua socket multicast Client liên kết socket UDP của mình với công và địa chỉ IP multicast mà server đã sử dụng
Xử lý dữ liệu nhận được: Client cd thê thực hiện xử lý dữ liệu nhận được tử server Điều này có thế bao gồm việc hiển thị thông tin, xử lý và trình bày đữ liệu cho người dùng hoặc tiến hành các tính toán phía client
Gửi yêu cầu hoặc phản hồi: Client có thế gửi yêu cầu hoặc phản hồi cho server thông qua các kết nối khác, không phải thông qua socket multicast
Điều này cho phép client tương tác với server trong các tình huống cụ thể ngoài việc nhận dữ liệu multicast
Trang 8Chương 3: KÉT QUÁ THỰC NGHIỆM 3.1 Công nghệ sử dụng
3.1.1 Ngôn ngữ lập trình
Java: Java cung cấp hỗ trợ mạnh mẽ cho socket multicast thông qua giao diện
MulticastSocket Bạn có thể sử dụng Java đề triển khai cả server và client
Hệ điều hành:
Hầu hết các hệ điều hành hiện đại (Windows, Linux, macOS) déu hé tro socket
multicast Điều này cho phép triển khai ứng dụng socket multicast trên nhiều nền
tảng khác nhau
3.1.2 Giao thức mạng:
Socket multicast thường dựa trên giao thire UDP (User Datagram Protocol) UDP
là giao thức không đảm bảo độ tin cậy, nhưng phù hợp với các ứng đụng yêu cầu
truyền đữ liệu nhanh chóng và không cần độ tin cậy cao
Cấu hình Mạng:
Đề hỗ trợ socket multicast, mạng cần được cấu hình đúng cách để đảm bảo định
tuyến gói dữ liệu multicast đến tất cả các thiết bị trong nhóm multicast Điều này
đòi hỏi router phải hỗ trợ giao thức IP multicast và cấu hình multicast routing
Giao thire IP Multicast:
Socket multicast str dung giao thirc IP multicast dé quan lý và định tuyến đữ liệu
multicast trong mạng Giao thức nảy quan trọng để đảm bảo gói dữ liệu multicast
Trang 9được chuyên tiếp đúng cách trong mạng
Trang 103.1.2 Thư viện
Thư viện lớp co so (Base Class Library - BCL): Chứa các lớp và phương thức
cơ bản đề thực hiện các chức năng chung như xử lý chuỗi, toán học, cấu trúc đữ liệu,
thao tác với tệp, và nhiều chức năng khác Tất cả đều được chứa trong namespace
System Đồng thời, nó chứa một số tính năng không chuẩn như LINQ, ADO.NET (đối với tương tác cơ sở đữ liệu), khả năng vẽ, biểu mẫu và hỗ trợ web
3.1.2.1 java.awt.EventQueue
Thư viện này chứa lớp EventQueue, được sử đụng đề quản lý và phân phối sự kiện trong ứng dụng EventQueue quản lý hàng đợi sự kiện và loại bỏ chúng một cách tuần tự
Trang 11Thư viện nay chia lop JTextPane, HTMLDocument, va HTMLEditorKit
Chúng được sử dụng đề hiển thị và quản lý nội dung HTML trong giao điện người
dùng
3.1.2.8 data.DataFile:
là một custom class hoặc package trong ứng dụng của bạn Chức năng cụ thế của nó phụ thuộc vào cách bạn đã triển khai nó Thường thì các custom classes như
vậy được tạo ra dé quản lý dữ liệu hoặc thực hiện logic img dung cu thé
3.1.2.9 tags Decode và tags.Encode:
Nhu day 1a cac custom classes hoadc package trong ứng dụng của bạn
Chúng có thể được sử dụng đề mã hóa và giải mã dữ liệu hoặc thực hiện các
chức năng khác liên quan đên việc gửi và nhận dữ liệu qua mạng
3.1.2.10 tags Tags:
một custom class hoặc package trong ứng dụng của bạn Chức năng cụ thể của
nó phụ thuộc vào cách bạn đã triển khai nó Thường thì các custom classes như vậy
được sử đụng đề xác định các thẻ hoặc giao thức trong việc giao tiếp giữa các thành
phần của ứng dụng
Trang 123.1.2.11 java.io IOException:
Đây không phải là một thư viện mà là một lớp trong Java Nó được sử dụng đề
xử lý các ngoại lệ liên quan đến I/O (Input/Output) Khi xảy ra lỗi trong quá trình đọc
hoặc ghi dữ liệu, IOException được ném, và bạn có thế xử lý nó để báo cáo lỗi hoặc
Thư viện này cung cấp lớp ObjectOutputStream, được sử đụng đề ghi đối
tượng Java vào luồng đữ liệu đầu ra Điều này cho phép bạn gửi đối tượng qua
mạng hoặc lưu trữ chúng trong tệp
3.1.2.14 java.net InetAddress:
Thư viện này cung cấp lớp InetAddress, được sử dụng đề biểu diễn địa chi IP của một máy tính hoặc thiết bị trong mạng Nó cho phép bạn làm việc với địa chỉ IP vả tên miễn
3.1.2.15 Java.net.InetSocketAddress:
Thư viện này cung cấp lớp SocketAddress, được sử dụng đề biểu diễn một địa
chỉ mạng trừu tượng Nó được sử dụng đề thiết lập kết nỗi mạng tới một địa chỉ cụ thé
3.1.2.16 java.awt.GridLayout:
Thu vién nay cung cap giao dién GridLayout, dung dé sap xép cac thanh phan
giao diện trong lưới (grid) có số hàng và cột xác định
3.1.2.17 java.awt.SystemColor:
Thư viện này cho phép bạn truy cập các màu hệ thống được sử dụng trong giao
diện người dùng, chăng hạn như màu nên của cửa số hoặc màu văn bản mặc định
3.1.2.18 Java.awt.event:
Trang 13Thư viện này chứa các lớp và giao diện liên quan đến xử lý sự kiện như
ActionListener, MouseAdapter, WindowListener Các lớp và giao diện này được sử
dụng dé dap ứng các sự kiện như nhân nút, di chuyên chuột, hoặc sự kiện cửa số
3.1.2.19 java.io Buffered Writer:
Thư viện này cung cấp lớp BufredWriter, được sử đụng đề ghi đữ liệu văn bản vào tệp với hiệu suất cao BufferedWriter cải thiện hiệu năng ghi dữ liệu so với việc sử
dụng FileWrtter
3.1.2.20 java.io.File Writer:
Thư viện này cung cấp lớp FileWriter, dùng đề ghi dữ liệu văn bản vào tệp Bạn
có thê sử dụng nó dé tao và ghi dữ liệu vào tệp văn bản
3.1.2.21 Java.net.Inet4+Address:
Thư viện này cung cấp lớp Inet4Address, được sử đụng đề đại diện cho địa chi
IPv4 Bạn có thể sử dụng nó đề làm việc với dia chi IP IPv4
3.1.2.22 Java.net.UnknownHostException:
Thư viện này chứa lớp UnknownHostException, được sử dụng để xử lý các
ngoại lệ liên quan đến việc không tìm thấy địa chỉ IP cho một tên miền hoặc máy chủ
cụ thê
3.1.2.23 javax.swing border:
Thư viện này cung cấp các lớp và giao diện liên quan đến việc định rào xung
quanh thành phần giao diện như EmptyBorder, EtchedBorder, TiledBorder Chúng
được sử đụng đề thiết lập đường biên và viền xung quanh các thành phần giao diện
3.1.2.24 javax.swing BoxLayout:
Thư viện này cung cấp lớp BoxLayout, dùng đề quản lý việc xếp chồng các
thành phần giao điện người dùng theo hướng ngang hoặc dọc Nó giúp bạn thiết kế giao diện linh hoạt băng cách định hướng và tỷ lệ kích thước của các thành phân
3.1.2.25 javax.swing.JButton:
Thư viện này cung cấp lớp JButton, đại diện cho một nút hoặc nút nhắn trong
Trang 14giao diện người dùng JButton được sử dụng để tạo các nút hoặc nút nhắn ma người
dùng có thể nhắn đề kích hoạt các hành động hoặc chức năng
3.1.2.26 javax.swing JFrame:
Thư viện này cung câp lớp JFrame, đại diện cho cửa sô giao diện chính của ứng
dụng JFrame cho phép bạn tạo cửa số ứng dụng và quản lý giao diện của nó
3.1.2.27 javax.swing JLabel:
Thư viện này cung cấp lớp JLabel, được sử đụng đề hiền thị văn bản hoặc hình
ảnh tĩnh trong giao điện người dùng JLabel thường được sử dụng đề hiển thị thông tin
hoặc nhãn cho các thành phần khác
3.1.2.28 javax.swing JPanel:
Thư viện này cung cấp lớp JPanel, được sử dụng để tạo và quản lý các khu vực
con của giao diện người dùng JPanel cho phép bạn nhóm và sắp xếp các thành phần
giao diện trong một khu vực cụ thé
3.1.2.29 javax.swing.JScrollPane:
Thư viện này cung cấp lớp JScrollPane, được sử dụng đề tạo thanh cuộn cho các thành phần giao diện, như JTextArea hoặc JL1st, khi nội dung vượt quá kích thước hiển thị
3.1.2.30 javax.swing.JTextArea:
Thư viện này cung cấp lớp JTextArea, dùng đề hiển thị hoặc nhập văn bản đa
dòng trong giao diện người dùng JTextArea thường được sử dụng khi bạn cần cho
phép người dùng nhập hoặc xem nhiều dòng văn bản
3.1.2.31 javax.swing.JTextField:
hư viện này cung cấp lớp JTextField, được sử dụng đề nhập hoặc hiển thị văn
bản ngắn trong giao điện người dùng JTextField thường được sử dụng cho các ô nhập
liệu ngắn
3.1.2.32 javax.swing border:
Thư viện này cung cap các lớp và giao diện liên quan đên việc định rào xung