سؤال

أقوم بتطوير برنامج يرسل صورا من كمبيوتر إلى آخر (مماثلة للمساعدة عن بعد دون إدخال الماوس / لوحة المفاتيح). الجهازين الذي أستخدمهما لاختباره هو جهاز واحد لنظام التشغيل Windows XP و Windows Vista. لدي آلة XP الثابتة متصلة مباشرة بموجب جهاز التوجيه، وأجهزة كمبيوتر محمول متصل من خلال اللاسلكي.

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

لا أعتقد أنه يهم ولكني أستخدم GDI + للصور. لذلك أرسل .jpg عبر دفق على الشبكة وإعادة بناءه على الجانب الآخر.

يتم استدعاء فئة رسائل الشبكة الخاصة بي NetMsg. وبعد يتكون من char* type و char* data. وبعد تحدد الأنواع كيف أفسر البيانات، ولا توجد مشاكل هنا.
دعنا نسمي الكمبيوتر رقم 1 و # 2.
عند إنشاء الاتصال وأعلقت المنطقة على رقم 1 الذي أريد إرساله:
001># 1 يرسل نوع تغيير حجم // للحصول على النافذة على # 2 بنفس الحجم مثل المنطقة التي وضعتها على # 1
002># 1 يرسل نوع picture_data // هذا هو imagedata الفعلي
003># 2 بعد تلقي الرسائل أعلاه، يرسل نوع الطلب_ المزيد // # 2 يريد المزيد من التصوير
004>#go إلى الخطوة 1

لم أزعجها حتى تصحيحها عند إرسال بيانات الصورة من XP إلى فيستا، لأنها تعمل بشكل رائع، مثلما أريد بالضبط. ومع ذلك، عندما ترسل Vista إلى XP، لاحظت ما يلي:

  • يمكن أن تكون البيانات المستلمة في الواقع NetMsgs. وبعد لدي دعم لهذا من خلال تقسيم البيانات إلى عدة NetMsgs
  • قد تكون البيانات المستلمة غير مكتملة، وهذا يتعين علي الانتظار للحصول على مزيد من البيانات. لدي دعم لهذا بمناسبة NetMsg غير مكتملة وعلى DataTransmission التالية كاملة. (وكذلك مزيج من الخطوة الأولى)

هذا قد فعلت تقريبا الخدعة لأنني حصلت على بعض الصور المنقولة بشكل صحيح، ومع ذلك توقفت فجأة. لم أكن تصحيح هذا بدقة حتى لا أعرف لماذا توقفت البيانات بشكل ثامن. ومع ذلك:

ما لا أفهمه هو أن هذا يعمل بشكل رائع عند إرساله من XP إلى فيستا ولكن ليس في الاتجاه الآخر. ماذا ينقصني؟

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

أي مساعدة و / أو ملاحظات محل تقدير!

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

المحلول 3

كان بالفعل حظر على كلا الجهازين وكان كلاهما ينتظر الآخر من أجل الاستجابة.

نصائح أخرى

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

ما تحتاجه حقا إلى القيام به هو وصف المشكلة بمزيد من التفاصيل. يمكن أن يكون هناك 100 أسباب لماذا "لا يعمل".

هل تحصل على أي بيانات من خلال؟

حاول إرسال عدد قليل من البايتات، هل يحصلون على؟

إذا كان هناك شيء يحصل، فحاول استخدام Wireshark، هل فيستا إرسال البيانات؟

هل تتلقى إكس بيها؟

لا سحر هنا، سيتعين عليك التحقق من مسار البيانات من البداية إلى النهاية.

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