الرمز الخاص للإشارة إلى بدء حزمة ثنائي؟

N

neocool

Guest
ما يمكن أن يكون رمزا جيدة خاصة للإشارة إلى بدء حزم في بلدي winsock تطبيق مخصص؟أريد أن تكون فريدة من نوعها فيما يتعلق البيانات الثنائية التي وانا ذاهب الى نقل (ومعظمهم من الوسائط المتعددة).

شكرا

 
حسنا!إذا كنت قد فهمت correctlly 47h الرمز قد حل مشكلتك كما هو بداية علامة في الإطار DVB القياسية!

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

ويمكن القيام بذلك إما عن طريق ترميز البيانات بحيث يستحيل على القيمة إلى أن يحدث (على سبيل المثال ترميز بسيط هو أن يحيل كل ما تبذلونه من البيانات متعددة الوسائط الثنائية المشفرة في أسكي عرافة ، والتي لا تحتوي على رمز أو فريدة من نوعها 0 وما يليها) ، أو باستخدام 'هروب' حرف : بروتوكول الهروب سيكون لإرسال قيمة خاصة (دعنا نقول انها 0xff) من خلال ارسال حرف الهروب (دعنا نقول انها 0xfe) ، يليه (القول) 0x7f على الوقوف ل0xff.في نهاية المطاف هذا التسلسل يتم استبداله فقط 0xff.بالطبع ربما كنت ترغب أيضا في إرسال قيمة 0xfe في بيانات الوسائط المتعددة ، وهذا يمكن القيام به سواء من خلال زيادة قيمة 0xfe لاثنين بايت 0xfe 0x7e ، أو عن طريق إرسال 0xfe 0xfe (أي حرف الهروب مرتين).نضع في اعتبارنا أن كل البيانات المرسلة عبر الاتصال يجب أن تكون محمية من هذا القبيل ، وإذا كان هناك حقول طول التي يمكن أن تتخذ وما يليها قيمة هذه يجب أن تكون إما ترميز أو خاضعة لتسلسل الهروب الترميز.

مع أي من هذه المخططات يمكنك التأكد من أن قيمة خاصة عندما يحدث ذلك يدل على بداية 'حزمة'.

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

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

هته
بارني

 
الشكر على الردود.

اقتباس :

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

أتذكر تعمل على الحفاظ على النظام حيث اشتكى من أن الزبون بعد إعادة التشغيل ، وأحيانا للبرمجة مفاتيح الوظائف الواردة القمامة كاملة.اتضح أن المطور قد حمت 'غير متقلبة' الذاكرة لتخزين وظيفة رئيسية باستخدام 8 بت لجنة حقوق الطفل.في الواقع هذا قلل من احتمال الكشف عن الفساد إلى 1 في 256 ؛ بعد بدء التشغيل في الصباح ، ومرة في السنة تقريبا (من حيث عدد أيام العمل) من ذاكرة الوصول العشوائي لكل الرئيسية التي لم يتم الكشف عن الفساد ، ونظرا لأنه كانت هناك مفاتيح للبرمجة والثلاثين على لوحة المفاتيح ، وهذا أدى إلى سوء سلوكه المتكرر إلى حد ما ، نتيجة لضعف الانتباه إلى الفرق بين المحتمل والمستحيل.

هته
بارني

 
بفضل barny451 وmehrara للردود.
وأود أن أعود قريبا

 

Welcome to EDABoard.com

Sponsor

Back
Top