tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
3
ZUGRIFFE
1257
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    BeaTBoxX BeaTBoxX ist offline Mitglied Platin
    Registriert seit
    Mar 2003
    Ort
    Nürnberg
    Beiträge
    525
    Moin zusammen,

    ich haeng grad an einem Projekt wo ich mit dem Protokoll Q3 (Mobilfunk.. evtl sagts wem was) mit einer .. naja sagen wir "Kiste" im weitesten Sinne kommunizieren muss.

    Dafür wurde schon mal was gemacht.. allerdings in C++.

    Dort wurden z.b. für den Login Strukturen angelegt.

    Beispiel:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    
    struct APDU_Header_HEX_CC 
    {  
      /*** TPTK HEADER = 4 Bytes ***/
      BYTE  TPTK_Version;                           /* TPTK Version */
      BYTE  TPTK_Reserved;                          /* TPTK Reserved */
      WORD  TPTK_Length;                           /* TPTK Length */  
     
      /*** COTP HEADER = 3 Bytes ***/
      BYTE  COTP_Length;                           /* TPTK Version */
      BYTE  COTP_PDU_Type;                          /* TPTK Reserved */
      BYTE  COTP_TPDU_Nr;                           /* TPTK Length */ 
     
      /*** SPDU HEADER ***/
      BYTE    SPDU_Type;                          /* Byte for SPDU Type */
      BYTE    SPDU_Length;                        /* Byte for SPDU Length */
      DWORD   SPDU_Conn_Acpt_Item1;
      DWORD   SPDU_Conn_Acpt_Item2;
      DWORD   SPDU_Session_Requirement;
     
      /*** Calling Session Selector ***/
      BYTE    SPDU_Calling_SSEL_Type;
      BYTE    SPDU_Calling_SSEL_Length;
      BYTE    SPDU_Calling_SSEL_Val1;
      BYTE    SPDU_Calling_SSEL_Val2;
      BYTE    SPDU_Calling_SSEL_Val3;
      BYTE    SPDU_Calling_SSEL_Val4;
      BYTE    SPDU_Calling_SSEL_Val5;
     
      /*** Called Session Selector ***/
      BYTE    SPDU_Called_SSEL_Type;
      BYTE    SPDU_Called_SSEL_Length;
      BYTE    SPDU_Called_SSEL_Val1;
      BYTE    SPDU_Called_SSEL_Val2;
      BYTE    SPDU_Called_SSEL_Val3;
     
      /*** Session User Data ***/
      BYTE    SPDU_Session_User_Data;
      BYTE    SPDU_Session_Data_Length;
     
      /*** Presentation Protocol ***/
      WORD    SPDU_PRES_Resp;    
      BYTE    SPDU_PRES_Resp_Add;
     
      WORD    SPDU_PRES_CPType;
      BYTE    SPDU_PRES_ModeSel_1;
      BYTE    SPDU_PRES_ModeSel_2;
      BYTE    SPDU_PRES_ModeSel_3;
     
      WORD    SPDU_PRES_Mode_Parameters;
      BYTE    SPDU_PRES_Mode_Parameters_Add;
      BYTE    SPDU_PRES_Mode_Parameters_Add1;
      WORD    SPDU_PRES_Mode_Parameters_Add2;
      BYTE    SPDU_PRES_Protocol_Version;
     
      //Result-definition-list
      BYTE    SPDU_PRES_Context_Def_List_Init;
      BYTE    SPDU_PRES_Context_Def_List_Init_Add; // size of definiton list
     
      // first item acceptance
      BYTE    SPDU_PRES_Context_Def_List_Item_Init;
      BYTE    SPDU_PRES_Context_Def_List_Item_Init_Add;
      WORD    SPDU_PRES_Context_Def_List_Result;
      BYTE    SPDU_PRES_Context_Def_List_Result_Add;   
      DWORD   SPDU_PRES_Context_Def_List_Result_TSN; 
     
      // second item acceptance
      BYTE    SPDU_PRES_Context_Def_List_Item_Init_Data;
      BYTE    SPDU_PRES_Context_Def_List_Item_Init_Add_Data;
      WORD    SPDU_PRES_Context_Def_List_Result_Data;
      BYTE    SPDU_PRES_Context_Def_List_Result_Add_Data;   
      DWORD   SPDU_PRES_Context_Def_List_Result_TSN_Data;
     
      // User Data
      DWORD   SPDU_PRES_UserData_Version_Init;
      WORD    SPDU_PRES_Context_ID_Init;
      BYTE    SPDU_PRES_Context_ID_Value;
      WORD    SPDU_PRES_Data_Value;
     
      /*** ACSE ****/
      WORD    ACSE_Response_Value;
     
      // padding
      WORD    ACSE_Response_Padding_Init;
      BYTE    ACSE_Response_Padding_Value;
     
      // protocol version
      BYTE    ACSE_Response_Protocol_Version; 
     
      // as0 context name
      DWORD   ACSE_Response_as0_Context_Name_Init;
      DWORD   ACSE_Response_as0_Context_Name_Value;
     
      // result of ap title
      DWORD   ACSE_Response_APTitle_Result_Init;
      BYTE    ACSE_Response_APTitle_Result_Value; 
     
      // result soure diagnostic
      DWORD   ACSE_Response_Result_Diagnostic_Init;
      WORD    ACSE_Response_Service_User_Init;
      BYTE    ACSE_Response_Service_User_Value;
     
      // user information
      WORD    ACSE_Response_User_Information_Init;
      WORD    ACSE_Response_User_Information_Item_Init;  
      WORD    ACSE_Response_User_Information_Item_Direct_Ref_Init;
      WORD    ACSE_Response_User_Information_Item_Direct_Ref_Value;
      WORD    ACSE_Response_User_Information_Item_Indirect_Ref_Init;
      BYTE    ACSE_Response_User_Information_Item_Indirect_Ref_Value;  
      WORD    ACSE_Response_User_Information_Item_Single_ASN_Type;
     
      /*** CMIP ***/
      DWORD   CMIP_Response_Init;
      BYTE    CMIP_Response_Padding;
      BYTE    CMIP_Response_Protocol_Version;
      WORD    CMIP_Response_Functional_Unit_Init;
      WORD    CMIP_Response_Functional_Unit_Value;
     
    } SPDU_CC;

    Frage nun:

    Wie realisiert man sowas sinnvoll in C# ?

    Ich mein byte gibt es ja aber word, dword ... ?!

    Hab schon bissl nachgelesen: Generell gibt es ja in c# immernoch structs. Macht es mehr sinn für sowas ne Klasse zu schreiben?
    Wie realisier ich so Datenschnipsel die WORD oder DWORD waren?

    Sonstwelche Tips für solch eine Protokollfummelei? Hab noch nicht so wirklich plan, was ich da tu %)
    Ich hoff mal das Subforum is ok

    Vielen Dank!

    Gruß
    Frank
    Geändert von BeaTBoxX (27.12.06 um 08:57 Uhr)
     
    Nürnberg ist die geheime Welthaupstadt der Musik, das weiss nur noch keiner :-)

  2. #2
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    Hallo Frank!

    Hab ich selber nur bisher im kleinem Stil gemacht. Aber ich kenn ein sehr gutes Tutorial zu Structs.
    Mastering structs in C# - VSj

    Der Thread ist im Datenverwaltung oder im Application und Service Design Forum vielleicht besser aufgehoben.
    Werde mal bescheid sagen...
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

  3. #3
    BeaTBoxX BeaTBoxX ist offline Mitglied Platin
    Registriert seit
    Mar 2003
    Ort
    Nürnberg
    Beiträge
    525
    Danke das hilft mir schon mal bissl weiter
     
    Nürnberg ist die geheime Welthaupstadt der Musik, das weiss nur noch keiner :-)

  4. #4
    Avatar von Jochen_Schneider
    Jochen_Schneider Jochen_Schneider ist offline Mitglied Silber
    Registriert seit
    Apr 2006
    Ort
    Bei Dortmund
    Beiträge
    51
    Such auch mal unter dem Stichwort P/Invoke. Da geht es eigentlich darum, externe Funktionen aus DLLs zu importieren (managed/unmanaged code), aber in diesem Zusammenhang werden auch Typentsprechungen genannt (so ist z.B. ein LPTCSTR in C# ein IntPtr). In der C#-Hilfe gibt es ebenfalls einige Übersichtstabellen dazu, irgendwo im Zusammenhang mit dem Stichwort DllImport.
     
    Eine Lüge kann einmal um die ganze Welt laufen, bevor die Wahrheit ihre Stiefel angezogen hat.
    (Winston Churchill)

Ähnliche Themen

  1. C-structs und Vererbung?!
    Von canfänger im Forum C/C++
    Antworten: 12
    Letzter Beitrag: 02.02.10, 21:42
  2. Liste für 2 Structs
    Von Need_Name im Forum C/C++
    Antworten: 8
    Letzter Beitrag: 04.01.10, 14:49
  3. C++ structs lesen
    Von Orthak im Forum C/C++
    Antworten: 7
    Letzter Beitrag: 13.01.09, 21:21
  4. sort vector von structs
    Von Thomasio im Forum C/C++
    Antworten: 9
    Letzter Beitrag: 17.03.08, 15:38
  5. [C] Warnung bei structs
    Von rookie im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 10.02.03, 12:55