मेरे पास WinForms ऐप है, और मैं फॉर्म पर प्रदर्शित आईपी की सूची के लिए रिवर्स DNS प्रविष्टियां प्राप्त करने का प्रयास कर रहा हूं।GetHostEntry बहुत धीमा है
मुख्य मुद्दा मैं आई है System.Net.Dns.GetHostEntry हास्यास्पद धीमी है, विशेष रूप से जब कोई रिवर्स DNS प्रविष्टि पाया जाता है। सीधे DNS के साथ, यह तेज़ होना चाहिए, क्योंकि DNS सर्वर NXDOMAIN वापस करेगा। आंतरिक रूप से, यह ws2_32.dll getnameinfo() पर कॉल कर रहा है, जिसमें कहा गया है "नाम समाधान डोमेन नाम सिस्टम (DNS), स्थानीय होस्ट फ़ाइल, या अन्य नामकरण तंत्र द्वारा किया जा सकता है" - इसलिए मुझे लगता है कि यह उन "अन्य नामकरण तंत्र" है जो इसे उत्पन्न कर रहा है इतनी धीमी हो, लेकिन क्या कोई जानता है कि ये तंत्र क्या हैं?
आम तौर पर यह, आईपी प्रति 5 सेकंड ले जा रहा है, जब तक यह एक रिवर्स प्रवेश पाता है, और फिर इसे लगभग तत्काल है। मैंने आंशिक रूप से धागे का उपयोग करके इस बारे में काम किया है, लेकिन चूंकि मैं एक बड़ी सूची कर रहा हूं और मैं केवल एक ही धागे को एक बार चला सकता हूं, फिर भी उन सभी को प्राप्त करने में कुछ समय लगता है।
क्या रिवर्स डीएनएस प्रविष्टियों को खोजने का एक बेहतर तरीका है जो तेजी से होने वाला है?
मैंने वास्तव में उस संस्करण का उपयोग शुरू करने के लिए किया था। यह प्रभावी रूप से टाइमआउट समस्या के आसपास हो जाता है। मेरी समस्या यह है कि बिल्कुल एक टाइमआउट होना चाहिए। कुछ यादृच्छिक आईपी के साथ कमांड लाइन पर चलाएं या कमांड लाइन पर लॉग ऑन करें - यह आम तौर पर <1 एस में वापस आ जाएगा और कहें "*** server.pf.local 42.23.1.42 नहीं मिल सकता: अस्तित्वहीन डोमेन" (या NXDOMAIN, खुदाई के मामले में) - मुझे आश्चर्य है कि GetHostEntry() एक ही तरीके से क्यों काम नहीं करता है। – gregmac
मेरा मानना है कि आप getnameinfo पर डिफ़ॉल्ट की तुलना में विभिन्न झंडे का उपयोग करके पी/इनवॉक के माध्यम से जो चाहते हैं उसे पूरा कर सकते हैं। मेरा संपादन देखें। –