मैं अपने सॉकेट के बीच संचार के लिए चुनिंदा फ़ंक्शन का उपयोग कर रहा हूं। मेरे पास थोड़ी देर लूप है और मैं करता हूं -लूप के अंदर चयन() के लिए FD_SET/FD_ZERO क्यों?
while(!done) {
FD_ZERO(&read_flags);
FD_ZERO(&write_flags);
FD_SET(comm_fd1, &read_flags);
FD_SET(comm_fd2, &read_flags);
FD_SET(STDIN_FILENO, &read_flags);
FD_SET(comm_fd1, &write_flags);
FD_SET(comm_fd2, &write_flags);
FD_SET(STDIN_FILENO, &write_flags);
//call select
sel = select(comm_fd1+comm_fd2+1, &read_flags, &write_flags, (fd_set*)0, &waitd);
और क्लाइंट पक्ष पर विभिन्न चर के साथ समान है। मुझे यह मूल तकनीक ऑनलाइन ट्यूटोरियल से मिली और बस इसके साथ चला गया। फिर यह मुझे मारा - मैं सेट को साफ़ क्यों करता हूं और जब भी मैं लूप करता हूं तो फाइल डिस्क्रिप्टर जोड़ता हूं? अगर वे पहले ही जोड़े गए हैं, तो उन्हें साफ़ क्यों करें और फिर से जोड़ें? इसलिए मैंने थोड़ी देर पहले ऐसा करने की कोशिश की, और कोड अब भी काम नहीं करता है। क्या कोई समझा सकता है क्यों? क्या यह सिर्फ इसलिए है क्योंकि चयन की सामग्री को संशोधित करता है? किसी भी मदद और/या अंतर्दृष्टि की सराहना की है।
यह भी ध्यान रखें कि आपको प्रत्येक बार लूप के समय की संरचना (आपके उदाहरण में प्रतीक्षा करें) को रीसेट करना चाहिए। –