TcpClient URG-Flag, oder: Telnet Synch Sequence

  • C#
  • .NET (FX) 4.0

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von 3daycliff.

    TcpClient URG-Flag, oder: Telnet Synch Sequence

    Hi,

    ich versuche, einen Telnet IP/Synch Call an einen Server zu senden. Laut RFC 854 ist die Struktur diese:
    1. Send the TELNET IP character;

    2. Send the TELNET SYNC sequence, that is:

    Send the Data Mark (DM) as the only character
    in a TCP urgent mode send operation.


    Die Struktur eines einzelnen Sends ist laut dem selben RFC:
    All TELNET commands consist of at least a two byte sequence: the
    "Interpret as Command" (IAC) escape character followed by the code
    for the command.


    IAC ist 255, IP ist 244, DM ist 242. Mein dementsprechender Versuch:

    C#-Quellcode

    1. Send (new byte[] { 255, 244 });
    2. Send (new byte [] { 255, 242 });
    3. Send ("Command");


    Danach ist mir die Spezifizierung aufgefallen: Das 242er-Byte soll im Urgent-Mode gesendet werden. Kein Ding - dachte ich. Wie sich herausstellt ist das sehr wohl ein Problem.
    Ich nutze einen TcpClient, dem zu Grunde liegenden Socket kann ich so die Urgent-Flag geben (denke ich jedenfalls):

    C#-Quellcode

    1. tcpClient.Client.SetSocketOption (SocketOptionLevel.Tcp, SocketOptionName.BsdUrgent, true);


    Laut MSDN SocketOptionName gilt allerdings:
    BsdUrgent: Verwendet dringende Daten wie in RFC-1222 definiert.Diese Option kann nur einmal festgelegt werden. Nachdem sie festgelegt wurde, kann sie nicht deaktiviert werden.


    Jo. Scheiße. :D
    Hat jemand eine Idee, wie ich mein Vorhaben trotzdem umsetzen kann? Ich wollte die Packets nur ungern selbst konstruieren, das ist jetzt nicht ganz so mein Gebiet.

    Grüße
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
    Hej,

    Nikx schrieb:

    Nachdem sie festgelegt wurde, kann sie nicht deaktiviert werden.

    Sagt das MSDN nur, oder hast du es wirklich getestet?

    Grüße
    Väinämö