كيف يمكن تحديد عدد الأحرف التي يقرأها StreamReader.ReadLine () في .NET؟

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

سؤال

أكتب تطبيق خادم ويب بلغة C # وأستخدم فئة StreamReader للقراءة من NetworkStream الأساسي: Genacodicetagpre

هذا الرمز عرضة لهجمات DoS لأنه إذا لم يقطع المهاجم الاتصال ، فلن ننتهي من قراءة السطر.هل هناك أي طريقة للحد من عدد الأحرف التي يقرأها StreamReader.ReadLine () في .NET؟

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

المحلول

سيتعين عليك استخدام التحميل الزائد لرمز الكود العام (والذي يحد من الطول) والقيام باكتشاف نهاية السطر بنفسك ؛لا ينبغي أن تكون خادعة للغاية.

للإصدار البطيء قليلاً (الذي يستخدم نسخة القراءة ذات الأحرف الفردية): Genacodicetagpre

نصائح أخرى

قد تحتاج إلى أحد التحميل الزائد لرمز الترميز العام:

مأخوذة من http://msdn.microsoft.com/en-us/library/9kstw824.aspx

Genacodicetagpre

ركز على سطر الترميز العام.يقرأ هذا فقط 5 أحرف من الدفق ويتم إدخالها في مصفوفة الترميز العام.قد ترغب في تغيير 5 إلى القيمة التي تريدها.

هذا هو الحل الخاص بي الذي يعتمد على الحل بواسطة مارك جرافيل: Genacodicetagpre

يتم توفير هذا الجزء من الشفرة "كما هو" بدون أي ضمان.

يمكنك دائمًا استخدام ".Read (...)" وتوصي MSDN بفعل ذلك في موقف مثل حالتك.

http://msdn.microsoft.com/en-us/library/system.io.streamreader.readline.aspx

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