سؤال

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

يمكنني بالطبع إنشاء مؤشر ترابط منفصل والتحقق من الشبكة من حين لآخر مع مؤقت ، ولكن ربما يكون هناك خيار أفضل هناك.

أنا أتطور لنظام التشغيل Windows بشكل رئيسي ، في C ++ (وليس .NET).

يمكنني أيضًا استخدام WXWidgets (أنا أستخدمه في واجهة المستخدم الرسومية) ولكني أشك في أنه يوفر أي وظائف ذات صلة.

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

المحلول

قد ترغب في التحقق من واجهة برمجة تطبيقات System Server (SENS) http://msdn.microsoft.com/en-us/library/cc185680(vs.85).aspx

لم أستخدمه بالفعل ، لكن يبدو أنه يوفر الأحداث التي تبحث عنها.

تعديل:

يبدو أن WMI لديها جميع المعلومات التي تحتاجها حول اتصال الشبكة المختلفة وتغيير الحالة. كما أن لديها نموذج أحداث غير متزامن يمكن استخدامه للحصول على إشعارات. أعتقد أن الحيلة هي توليد استعلام WMI المناسب للحصول على المعلومات التي تريدها. هذه مقالات يبدو وكأنه النوع الصحيح من الاستعلام ، وهذا MSDN يشرح كيفية التعامل مع الأحداث بشكل غير متزامن.

نصائح أخرى

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

يقدم رابط MSDN هذا مثالًا مفصلاً للغاية حول كيفية التقاط الأحداث على WMI مع COM. لم يكن المثال في الواقع يلتقط أحداث الشبكة - لكنني أعتقد أنه إذا قمت بتوصيل الاستعلام الصحيح ، فسيعمل.

(الكثير من التعليمات البرمجية هنا ، لذلك أنا لا أقوم بنسخها إلى الإجابة)http://msdn.microsoft.com/en-us/library/AA390425٪28V=Vs.85٪29.aspx

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