Lập trình mạng P3
Số trang: 13
Loại file: pdf
Dung lượng: 154.26 KB
Lượt xem: 8
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Giới thiệu về multicastMulticast : 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 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áco.Chương 31. Giới thiệu về multicastUnicast: giao tiếp chỉ có...
Nội dung trích xuất từ tài liệu:
Lập trình mạng P3Chương 3: Lập trình Multicasting Chương 31. 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 multicasto 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áco 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 Chương 31. 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. Chương 32. Đị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 Chương 33. Truyền/ nhận multicastGử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 multicastNhận multicast- Trước khi multicast, cần tham gia vào nhóm multicast bằng cách gọi hàm setsockoptstruct 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 */ } Chương 33. Truyền/ nhận multicastVí dụ tham gia vào một nhóm multicastSOCKET 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)); Chương 33. Truyền/ nhận multicastNhận dữ liệunbytes=recvfrom(s,msgbuf,MSGBUFSIZE,0, (struct sockaddr *) &localif, sizeof(localif))) ; Chương 34. Gửi tin cậyThiế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. Chương 34. Gửi tin cậyVí 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_ANYlocalif.sin_family = AF_INET;localif.sin_port = htons(0);localif.sin_addr.s_addr = htonl(INADDR_ANY);bind(s, (SOCKADDR *)&localif, sizeof(localif)); Chương 34. Gửi tin cậy// Set the outgoing interfacesendif = inet_addr(157.124.22.104);setsockopt(s, IPPROTO_RM, RM_SET_SEND_IF, (char *)&sendif, sizeof(sendif));// Connect the socket to the multicast destinationmulti.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 datasend(s, buf, buflen, 0); // Close up the sessionclosesocket(s); Chương 35. Nhận tin cậyThiế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 đị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 Chương 35. Nhận tin cậyVí 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); Chương 35. Nhận tin cậyVí 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);// Dont need to listen anymore// st ...
Nội dung trích xuất từ tài liệu:
Lập trình mạng P3Chương 3: Lập trình Multicasting Chương 31. 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 multicasto 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áco 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 Chương 31. 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. Chương 32. Đị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 Chương 33. Truyền/ nhận multicastGử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 multicastNhận multicast- Trước khi multicast, cần tham gia vào nhóm multicast bằng cách gọi hàm setsockoptstruct 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 */ } Chương 33. Truyền/ nhận multicastVí dụ tham gia vào một nhóm multicastSOCKET 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)); Chương 33. Truyền/ nhận multicastNhận dữ liệunbytes=recvfrom(s,msgbuf,MSGBUFSIZE,0, (struct sockaddr *) &localif, sizeof(localif))) ; Chương 34. Gửi tin cậyThiế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. Chương 34. Gửi tin cậyVí 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_ANYlocalif.sin_family = AF_INET;localif.sin_port = htons(0);localif.sin_addr.s_addr = htonl(INADDR_ANY);bind(s, (SOCKADDR *)&localif, sizeof(localif)); Chương 34. Gửi tin cậy// Set the outgoing interfacesendif = inet_addr(157.124.22.104);setsockopt(s, IPPROTO_RM, RM_SET_SEND_IF, (char *)&sendif, sizeof(sendif));// Connect the socket to the multicast destinationmulti.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 datasend(s, buf, buflen, 0); // Close up the sessionclosesocket(s); Chương 35. Nhận tin cậyThiế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 đị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 Chương 35. Nhận tin cậyVí 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); Chương 35. Nhận tin cậyVí 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);// Dont need to listen anymore// st ...
Tìm kiếm theo từ khóa liên quan:
Kỹ thuật viễn thông Tự động hóa Cơ khí chế tạo máy Điện – điện tử Kiến trúc xây dựngGợi ý tài liệu liên quan:
-
Đề cương chi tiết học phần Trí tuệ nhân tạo
12 trang 436 0 0 -
Đề cương chi tiết học phần Vi xử lý
12 trang 295 0 0 -
Đồ án tốt nghiệp: Thiết kế hệ thống điều khiển máy phay CNC 3 trục
88 trang 252 0 0 -
79 trang 226 0 0
-
33 trang 223 0 0
-
Đồ án: Kỹ thuật xử lý ảnh sử dụng biến đổi Wavelet
41 trang 218 0 0 -
Báo cáo thực tập tại Nhà máy in Quân Đội 1
36 trang 206 0 0 -
Đồ án tốt nghiệp: Điều khiển cầu trục giàn RTG dùng PLC S71200
90 trang 204 1 0 -
127 trang 192 0 0
-
Luận văn Thạc sĩ Kỹ thuật: Ứng dụng Blockchain trong bảo mật IoT
90 trang 190 1 0