2009-08-25 3 views
1

Ich versuchte vor kurzem eine similar question Frage, aber nach mehreren Antworten erkannte ich, dass es nicht die richtige Sache war zu fragen.Best Practice: Generieren und Analysieren von Netzwerkpaketen für ein bekanntes Protokoll in C#?

Gibt es einen Leitfaden oder eine allgemein anerkannte Praxis zum Generieren und Analysieren von Netzwerkpaketen basierend auf einem bestehenden Protokoll wie SMPP (Short Message Peer-to-Peer Protokoll [Verwendet für SMS Nachrichten]) oder verschiedenen Chatprotokollen wie HOTLINE oder IRC mit C#.

Eine der Antworten erwähnt Google Protocol Buffers und eine .NET version. Nachdem ich mir das angesehen habe, wurde mir klar, dass die Serialisierung sehr nützlich ist, wenn Sie die Kontrolle über beide Seiten haben (Client und Server). Wo würde ich die Protokollspezifikation folgen.

generieren In der Vergangenheit habe ich eine Klasse oder Struktur mit Eigenschaften hergestellt, die Teil des Netzwerk-Paket/Protokoll sind:

// PSEUDO CODE 
class NetworkObject 
{ 
    private int length; 
    private string data; 

    // ... 

    public byte[] GetBytes() 
    { 
     // Convert string and int to byte array 
     return byte array; 
    } 
} 

Die Klasse hat eine byte[] GetBytes() Methode, die ich anrufen, sobald ich habe Legen Sie die entsprechenden Eigenschaften fest. Ich nehme dieses Byte-Array und sende es über das Netzwerk. In meiner vorherigen Frage schlug eine der Antworten vor, die Daten in einem Speicherstrom oder Bytestrom zu speichern, was eine bessere Idee zu sein scheint.

Es scheint, als wäre meine Byte-Array-Methode wahrscheinlich langsamer als die Übergabe eines Netzwerk-Streams an eine Methode, die die Paketdaten gemäß den Klasseneigenschaften direkt in den Stream schreibt. Was ich wahrscheinlich tun werde, wenn ich nicht etwas wirklich Großes vermisse.

Parsing Wenn ich verschiedene Case-Anweisungen verwenden Parsen durch die verschiedenen PDUs zu treten und eine Network mit den entsprechenden Eigenschaften bevölkert und mit ihm tun zu erzeugen, wie ich es sehen.

+0

Wir brauchen wirklich eine bessere Antwort für diese Frage! ;) –

Antwort

1

Warum versuchst du nicht Serialisierung von Objekten?

+0

Können Sie ein Objekt serialisieren, so wie Sie eine Struktur in C schreiben können? Ohne Overhead und nur die Byte-Daten? –