سؤال

أحتاج إلى واحدة من تطبيقات C # .NET لتكون بمثابة خادم Bootp. البروتوكول بسيط جدا لكنني لا أعرف طريقة سهلة لبناء / تحليل البيانات الثنائية.

أيه أفكار:alt text
(مصدر: tcpipguide.com.)

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

المحلول

هناك عدة طرق للقيام بذلك. قد تكون قادرا على اللعب مع سمات الهشام مثل Pluctlayout لحزم هيكل في مجموعة بايت، ولكن هذا ربما يكون صعبا ولا يستحق الجهد.

يمكنك استخدام إطار متخصص مثل protobuf. للنسخ فئة بطريقة ستحصل على تسلسل لتتناسب مع الهيكل الذي تحتاجه.

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

على أي حال، فإنه يساعد على الرجوع إلى خادم عامل. استخدم أداة مثل Wireshark أو Microsoft Network Monitor لالتقاط حركة المرور الأسلاك حتى تتمكن من مقارنة تنسيق سلك الخاص بك إلى مثال معروف بالعمل.

نصائح أخرى

يمكنك إنشاء بنية بسيطة مثل:

[Serializable]
[StructLayout(LayoutKind.Sequential, Pack=1)]
public struct MyData {
    public byte OpCode;
    public byte HardwareType;
    public byte HardwareAddressType;
    public byte Hops;

    public int TransactionId;

    public short Seconds;
    public short Flags;

    public int ClientIPAddress;

    public int CurrentIP;

    // all other fields in the required sequence  
}  

واستخدام الكود من هذا blogpost. لتسليط / التحيز الحزم. ولكن قد تكون هناك مشكلة في ServerName واسم Bootfilename بسبب الاختلافات في الترميز وربما تحتاج إلى تحديد الحضور الدقيق لكل مجال من الحقول (انظر هذا الموضوع على MSDN للتفاصيل).
آمل أن يساعد هذا :)

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