पर एकाधिक मल्टीकास्ट समूहों की सदस्यता लेना क्या एक एकल सॉकेट पर एक से अधिक मल्टीकास्ट समूह से डेटा प्राप्त करना संभव है?एक सॉकेट (लिनक्स, सी)
उदाहरण के लिए:
void AddGroup(int sock,
const char* mc_addr_str,
int mc_port,
const char* interface) {
struct sockaddr_in mc_addr;
memset(&mc_addr, 0, sizeof(mc_addr));
mc_addr.sin_family = AF_INET;
mc_addr.sin_addr.s_addr = inet_addr(mc_addr_str);
mc_addr.sin_port = htons(mc_port);
if ((bind(sock, (struct sockaddr *) &mc_addr,
sizeof(mc_addr))) < 0) {
perror("bind() failed");
exit(1);
}
// construct an IGMP join request structure
struct ip_mreq mc_req;
mc_req.imr_multiaddr.s_addr = inet_addr(mc_addr_str);
mc_req.imr_interface.s_addr = inet_addr(interface);
if ((setsockopt(sock, IPPROTO_IP, IP_ADD_MEMBERSHIP,
(void*) &mc_req, sizeof(mc_req))) < 0) {
perror("setsockopt() failed");
exit(1);
}
}
जब मैं एक बहुस्त्र्पीय समूह जोड़ने के इस कोड काम करता है। लेकिन जब मैं एक और जोड़ने की कोशिश करता हूं, तो "बाध्य" विफल रहता है। मुझे समझ में नहीं आता कि बांध को पहले स्थान पर क्यों होना चाहिए? (लेकिन कोड इसके बिना काम नहीं करता है)।
आदर्श रूप से मैं एक ही सॉकेट पर AddGroup कई बार कॉल करना चाहता हूं। क्या यह संभव है? या मुझे प्रति समूह एक सॉकेट चाहिए और फिर मतदान का उपयोग करें?
आप सही नहीं हैं तैयार करने के बारे ख्याल रखना चाहिए। आप जितने चाहें उतने समूहों में शामिल हो सकते हैं। मल्टीकास्ट समूहों में शामिल होने के लिए पहचानने वाले टुपल से कोई लेना देना नहीं है। – EJP