فشل GethostbyName في اسم المضيف المحلي بعد استئناف من السبات (Vista+7؟)

StackOverflow https://stackoverflow.com/questions/2153716

سؤال

فقط أتساءل عما إذا كان أي شخص آخر قد رصد هذا:

في بعض آلات المستخدم التي تشغل برامجنا ، في بعض الأحيان ، فإن دعوة Win32 Winsock gethostbyname فشل مع رمز الخطأ 11004.

للحصول على حجة إلى GethostbyName ، أنا أنقل النتيجة من gethostname.

الآن تقول المستندات 11004 هي wsano_data. لا يبدو أن أيًا من الأوصاف ذات صلة (يحدث إذا قمت بتمرير عنوان IP6 ، لكنني كما أقول ، أنا أمر باسم مضيف).

والأكثر إثارة للاهتمام هو أن MSDN تقترح أن هذا المزيج (gethostname تليها gethostbyname) يجب ألا تفشل أبدًا ، ولا حتى إذا لم يكن هناك عنوان IP (في هذه الحالة ، سيعيد فقط قائمة فارغة من IPS). إليكم الاقتباس من إدخال GethostName MSDN:

... من المضمون أن يتم تحليل الاسم الذي تم إرجاعه بنجاح بواسطة GethostbyName و WSAASyncGethostbyName.

لا يحدث ذلك إلا بعد استئناف من السبات ، وفي تلك الفترة القصيرة عندما يتم إعادة تشغيل الشبكة ، وفقط على Vista/7 (حسنًا ، لم أرها إلا على Vista و 7).

إحدى النظريات التي كانت لدي أنها تتعلق بـ IP6. ربما لفترة قصيرة ، تقارير الشبكة عن عنوان IP6 ولكن ليس عنوان IP4 CorreSponging (أنا متأكد تمامًا من أن جميع آلات العميل هي مكدس IP مزدوج ، لكنني قد أكون مخطئًا).

حاولت إعادة إنتاج عن طريق إيقاف تشغيل بطاقة الشبكة الخاصة بي (لفرض أي عناوين IP) ولم أتمكن من إعادة إنتاجها.

هل رأى أي شخص هذا من قبل؟

أيه أفكار؟

يوحنا

هل كانت مفيدة؟

المحلول

أعتقد أنك تعرضت للعض من قضية الحافة.

في نهاية اليوم ، يكون القيام بشيء مثل السبات هو الأشياء المتقدمة - استعادة جهاز كمبيوتر إلى حالته الدقيقة والاستمرار كما لو لم يحدث شيء. هذا كل شيء جيدًا وجيدًا ، لكن بعض الأشياء لن نجت من ذلك ، مثل أي اتصالات شبكة تتوقع الرد ، وأي سجلات منخفضة المستوى على محمل الجد لا تقم بالقراءة فقط في وحدة المعالجة المركزية.

أقترح عليك الاتصال بـ Microsoft وتسألهم عما إذا كانوا يعرفون ذلك. إذا كان يعمل مع أنظمة أخرى ، فمن المرجح أن يكونوا مهتمين بإصلاحها لـ 7/vista. فقط كن مستعدًا لتسليم ثنائيًا حتى يتمكنوا من اختباره.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top