मैं बीएसडी सॉकेट से विंसॉक तक कुछ कोड पोर्ट कर रहा हूं, और मुझे यकीन नहीं है कि नीचे दिए गए मामले को कैसे संभाला जाए।विंसॉक में फ़ाइल हैंडल और सॉकेट मिक्सिंग
मेरे मूल आवेदन दोनों stdin और नेटवर्क सॉकेट पर एक का चयन चलाता है:
FD_SET(sock, &fd);
FD_SET(0, &fd);
...
if (select(..., &fd, ...)...)
विनसॉक में इस चलाने के लिए कोशिश कर रहा एक त्रुटि 10038 (WSAENOTSOCK) देता है, जो समझ में आता है, के बाद से क्या फ़ाइल हैंडल 0 था में लिनक्स (stdin) विंडोज में सॉकेट नहीं है (अधिक सटीक: एक सॉकेट प्रकार)।
क्या इस परीक्षण को विंडोज सॉकेट में बंद करने का कोई आसान तरीका है?
धन्यवाद मैक्स। मैं आज कोशिश करूँगा। यह एक शर्म की बात है, हालांकि; मैं एक विंसॉक पोर्टिंग परत होने की उम्मीद कर रहा था; ऐसा लगता है कि इस बारे में एक और अधिक लिखने की आवश्यकता होगी जिसे मैंने कल्पना की थी। ओह अच्छा। – Mikeage
आप एक हैंडल पर ओवरलैप्ड आईओ का उपयोग नहीं कर सकते हैं जब तक कि इसे किसी विशेष तरीके से नहीं बनाया गया हो। विशेष रूप से इसका मतलब यह है कि आप विरासत वाले हैंडल पर ओवरलैप्ड आईओ का उपयोग करने में सक्षम नहीं होंगे, जैसे कि तीन मानक धाराएं। –