Bài giảng Lập trình mạng - Chương 3: Lập trình multicasting
lượt xem 3
download
Bài giảng Lập trình mạng - Chương 3: Lập trình multicasting. Những nội dung chính được trình bày trong chương này gồm có: Giới thiệu về multicast, địa chỉ IP dùng cho Multicast, truyền/nhận multicast, gửi tin cậy, nhận tin cậy. Mời các bạn cùng tham khảo.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Lập trình mạng - Chương 3: Lập trình multicasting
- Chương 3: Lập trình Multicasting CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Chương 3 1. Giới thiệu về multicast - Multicast : phát tán thông tin tới một nhóm địa chỉ một cách đồng thời. Root multicast và non –root multicast o Root multicast: một thành viên đóng vai trò là root phát tán thông tin tới các lá leaf, root truyền thông tin đồng thời tới các lá, lá chỉ truyền thông tin về root mà không thể truyền thông tin sang lá khác o Non root multicast: tất cả các thành viên là các lá (leaf) , lá truyền thông tin tới tất cả các lá khác CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Chương 3 1. Giới thiệu về multicast - Unicast: giao tiếp chỉ có một bên gửi và một bên nhận - Broadcast: Giao tiếp gửi từ một điểm tới tất cả các điểm khác, broadcast chỉ có một điểm gửi đi duy nhất. CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Chương 3 2. Địa chỉ IP dùng cho Multicast - Sử dụng địa chỉ ở lớp D từ 224.0.0.0 tới 239.255.255.255 - Một số địa chỉ IP đặc biệt dùng cho multicast CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Chương 3 2. Địa chỉ IP dùng cho Multicast - Thành viên phải tham gia vào nhóm mới nhận dữ liệu multicast được - Chương trình gửi gửi cho nhóm thì mọi thành viên trong nhóm đều nhận đc dữ liệu Receiver Receiver Group Group Member 1 Member 1 Receiver Group Member 2 Sender Group Member 1 Sender & Receiver CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Chương 3 2. Địa chỉ IP dùng cho Multicast Giao thức IGMP (Internet Group Management Protocol ) : - Là giao thức mà mỗi máy nhận trao đổi thông tin với bộ tìm đường multicast cục bộ (Local Multicast Router ) để trở thành một thành viên của nhóm multicast - Cung cấp một phương thức qua nó một thành viên có thể tham gia hoặc rời bỏ nhóm multicast - Để tham gia nhóm thành viên gửi một thông báo yêu cầu tham gia nhóm - Các bộ tìm đường multicast gửi IGMP query tới tất cả các thành viên để xem các thành viên còn trong nhóm hay không. CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Chương 3 2. Địa chỉ IP dùng cho Multicast Giao thức IGMP (Internet Group Management Protocol ) : Joining a Group 224.1.2.3 R1 R2 R3 Report CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Chương 3 2. Địa chỉ IP dùng cho Multicast Giao thức IGMP (Internet Group Management Protocol ) : Maintaining a Group 224.1.2.3 224.1.2.3 224.1.2.3 R1 R2 R3 X Report X Suppressed Suppressed Query Bộ tìm đường định kỳ gửi query tới 224.0.0.1 (tất cả các thành viên trong mạng này) Các thành viên có thể trả lời report hoặc không (còn tham gia hoặc không) CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Chương 3 3. Truyền/ nhận multicast Gửi multicast - Hiệu chỉnh lại địa chỉ trong hàm sendto cho phù hợp, địa chỉ là nhóm cần multicast Nhận multicast - Trước khi multicast, cần tham gia vào nhóm multicast bằng cách gọi hàm setsockopt struct ip_mreq mreq; setsockopt(sock,IPPROTO_IP,IP_ADD_MEMBERSHIP,&mreq,sizeof(mreq)); ip_mreq có cấu trúc như sau: struct ip_mreq { struct in_addr imr_multiaddr; /* multicast group to join */ struct in_addr imr_interface; /* interface to join on */ } CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Chương 3 3. Truyền/ nhận multicast Ví dụ tham gia vào một nhóm multicast SOCKET s; SOCKADDR_IN localif; struct ip_mreq mreq; s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); localif.sin_family = AF_INET; localif.sin_port = htons(5150); localif.sin_addr.s_addr = htonl(INADDR_ANY); bind(s, (SOCKADDR *)&localif, sizeof(localif)); mreq.imr_interface.s_addr = inet_addr("157.124.22.104"); mreq.imr_multiaddr.s_addr = inet_addr("234.5.6.7"); setsockopt(s, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char *)&mreq, sizeof(mreq)); CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Chương 3 3. Truyền/ nhận multicast Nhận dữ liệu nbytes=recvfrom(s,msgbuf,MSGBUFSIZE,0, (struct sockaddr *) &localif, sizeof(localif))) ; CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Chương 3 4. Gửi tin cậy Thiết lập quá trình gửi tin cậy qua các bước sau: 1. Tạo socket multicast tin cậy 2. Bind socket to INADDR_ANY. 3. Thiết lập địa chỉ giao tiếp là RM_SET_SEND_IF. 4. Kết nối socket tới địa chỉ nhóm multicast. CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Chương 3 4. Gửi tin cậy Ví dụ quá trình gửi tin cậy: SOCKET s; ULONG sendif; SOCKADDR_IN localif, multi; char buf[1024]; int buflen=1024; s = socket(AF_INET, SOCK_RDM, IPPROTO_RM); // SOCK_RDM giống SOCK_DGRAM // Bind to INADDR_ANY localif.sin_family = AF_INET; localif.sin_port = htons(0); localif.sin_addr.s_addr = htonl(INADDR_ANY); bind(s, (SOCKADDR *)&localif, sizeof(localif)); CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Chương 3 4. Gửi tin cậy // Set the outgoing interface sendif = inet_addr("157.124.22.104"); setsockopt(s, IPPROTO_RM, RM_SET_SEND_IF, (char *)&sendif, sizeof(sendif)); // Connect the socket to the multicast destination multi.sin_family = AF_INET; multi.sin_port = htons(5150); multi.sin_addr.s_addr = inet_addr("234.5.6.7"); connect(s, (SOCKADDR *)&multi, sizeof(multi)); // Send the data send(s, buf, buflen, 0); // Close up the session closesocket(s); CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Chương 3 5. Nhận tin cậy Thiết lập quá trình nhận tin cậy qua các bước sau: 1. Tạo socket multicast tin cậy 2. Bind socket địa chỉ nhóm multicast. 3. Nếu chương trình nhận cần lắng nghe trên giao tiếp cụ thể thì gọi setsockopt và RM_ADD_RECEIVE_IF cho từng interface đó 4. Gọi listen 5. Chờ đợi accept CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Chương 3 5. Nhận tin cậy Ví dụ nhận tin cậy: SOCKET s, ns; SOCKADDR_IN multi, safrom; ULONG localif; char buf[1024]; int buflen=1024, fromlen, rc; s = socket(AF_INET, SOCK_RDM, IPPROTO_RM); multi.sin_family = AF_INET; multi.sin_port = htons(5150); multi.sin_addr.s_addr = inet_addr("234.5.6.7"); bind(s, (SOCKADDR *)&multi, sizeof(multi)); listen(s, 10); CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Chương 3 5. Nhận tin cậy Ví dụ nhận tin cậy: localif = inet_addr("157.124.22.104"); setsockopt(s, IPPROTO_RM, RM_ADD_RECEIVE_IF, (char *)&localif, sizeof(localif)); fromlen = sizeof(safrom); ns = accept(s, (SOCKADDR *)&safrom, &fromlen); closesocket(s); // Don't need to listen anymore // start receiving data . . . while (1) { rc = recv(ns, buf, buflen, 0); if (rc == SOCKET_ERROR) { if (WSAGetLastError() == WSAEDISCON) break; else { // An unexpected error } } } closesocket(ns); CuuDuongThanCong.com https://fb.com/tailieudientucntt
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Lập trình mạng
119 p | 1921 | 1059
-
Bài giảng Lập trình mạng: Phần 1
75 p | 157 | 24
-
Bài giảng Lập trình mạng với Java
66 p | 148 | 21
-
Bài giảng Lập trình mạng: Phần 2
112 p | 137 | 16
-
Bài giảng Lập trình mạng: Ôn tập thi hết môn Lập trình mạng - Phạm Trần Vũ
17 p | 121 | 11
-
Bài giảng Lập trình mạng: Chương 1 - ThS. Trần Đắc Tốt
89 p | 119 | 10
-
Bài giảng Lập trình mạng: Chương 1 - Lương Ánh Hoàng
17 p | 122 | 10
-
Bài giảng Lập trình mạng - Lương Ánh Hoàng
81 p | 94 | 10
-
Bài giảng Lập trình mạng: Chương 0 - ĐH Công nghệ Đồng Nai
4 p | 107 | 7
-
Bài giảng Lập trình mạng: Chương 1 - Trương Đình Huy
14 p | 33 | 6
-
Bài giảng Lập trình mạng: Chapter 1 - Nguyễn Thị Thanh Vân
59 p | 70 | 6
-
Bài giảng Lập trình mạng - Chương 5: Lập trình Web - CGI
112 p | 75 | 5
-
Bài giảng Lập trình mạng: Chương 2 - Phạm Trần Vũ
38 p | 80 | 4
-
Bài giảng Lập trình mạng: Mạng máy tính và lập trình mạng - Nguyễn Hữu Thể
25 p | 82 | 4
-
Bài giảng Lập trình mạng - Chương 1: Giới thiệu Lập trình mạng
18 p | 63 | 4
-
Bài giảng Lập trình mạng: Tổng quan về lập trình mạng - Bùi Minh Quân
18 p | 71 | 4
-
Bài giảng Lập trình mạng: Chương 3 - Phạm Trần Vũ
24 p | 88 | 3
-
Bài giảng Lập trình mạng: Giới thiệu môn học - TS. Nguyễn Hoài Sơn
13 p | 95 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn