سؤال

أحاول كتابة عميل لعبة عادي للغاية للحصول على بعض التدريبات مع ActionScript 3 و Flex Framework.

لدي بعض المشكلات في الكود التالي:

private function readResponse():void {
   var r:ByteArray =  new ByteArray();
   readBytes(r);
   while (r.bytesAvailable != 0)
   {
    try
    {
     var d:Object = r.readObject();
     protocol.execute(d); // do something with the object
    }
    catch (RangeError)
    {
     trace("Ouch, packet dismissed? Restlength:" + r.bytesAvailable);
    }
   }
  }

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

هل هذه هي الطريقة الخاطئة لمحاولة التعامل مع أكثر من كائن وارد؟ هل يمكن أن تكون هذه مشكلة خوادم ، مما يتسبب في إرسال الحزم/غير مكتملة؟

سأكون سعيدًا جدًا إذا تمكن شخص ما من مساعدتي.

التحديث القليل ، ربما يساعد هذا: قمت بتسجيل طول البيانات التي ترسل عبر الشبكة. يبدو أن تسجيل الدخول مثل هذا (الخادم | العميل):
208 | 208
92 | 92
208 | 208 214 | 214 & OUCH ، تم رفض Packet؟ الطول :: 212
148 | R.Bytesavail: 388
27 | 388 & OUCH ، تم رفض Packet؟ الطول :: 384 وما إلى ذلك ...

هذا يبدو أن الخادم ينفجر البيانات والعميل يعبث بهذا. ما الذي يمكنني نشره أكثر للحصول على بعض المساعدة في هذه المشكلة؟ هل يجب عليّ مسح دليل البيانات على خادم بيثون للحصول على الأمور بشكل صحيح؟ لست متأكدًا حقًا مما يحدث. أنا أعلم فقط أن هذا يحدث في الغالب إذا كنت doig الكثير من العميل. العميل (لأنه من الواضح أنه لا يتوقع هذا). أنا عالق حقًا مع هذا :(

ملاحظة: يتم كتابة الخادم في Python مع مقبس TCP المعتاد يشبه البرنامج التعليمي ومواضيع العميل.

لا يوجد حل صحيح

نصائح أخرى

إذا كنت تستخدم AMF ، فأنا لا أفهم لماذا تقرأ البايتات من مجموعة ثنائية؟

حاول استخدام RemoteObject ، ومعالج الاستجابة (وفي النهاية أيضًا معالج الأخطاء)

هناك مثال هنا: http://pyamf.org/tutorials/actionscript/simple.html#actionscript(وهو ما لم أحاوله لأنني لست ذكاء الثعبان)

بخلاف ذلك ، تذكر أن الأوامر هي النار والنسيان. الجزء الرئيسي من المشكلات التي واجهتها في التعامل مع حركة المرور على جانب الخادم في Flex ناتجة عن عدم تسجيل مستمعي الأحداث وما إلى ذلك. استدعاء الخادم.

أتمنى أن يساعد ذلك

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