tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
982
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Terminator2 Terminator2 ist offline Mitglied Brokat
    Registriert seit
    Aug 2005
    Beiträge
    256
    Hallo,

    undzwar habe ich folgenden Code gefunden:

    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
    
    Imports System
    Imports System.Net
    Imports System.Net.Sockets
    Imports System.Text
    Imports System.io
    Imports System.Threading 
    'Die Imports
     
      Public stream As NetworkStream
        Public sr As StreamReader
     
     Private Function sendCommand(ByVal send As String) As String
            send += vbCrLf
            Dim data As [Byte]() = Encoding.ASCII.GetBytes(send)
            stream.Write(data, 0, data.Length)
            sr = New StreamReader(stream)
            Dim buffer As New StringBuilder
            Do While sr.Peek() > 0
                Thread.Sleep(100)
                buffer.Append(sr.ReadLine + vbCrLf)
            Loop
            Return buffer.ToString
        End Function
    Dim info as String
           Dim server As String = "servername"
            Dim user As String = "benutername"
            Dim password As String = "passwort"
            Dim client As New TcpClient(server, 110)
            stream = client.GetStream()
            sr = New StreamReader(stream)
            info += sendCommand("?")
    MSGBOX(info)

    Über den Ausführen Befehl telnet kann ich das zu steuernde Gerät mit den normalen Kurzbefehlen wie "O" steuern. Bei der Steuerung per VB.NET muss jedoch aus dem "O" laut Anleitung "0x4F" erzeugt werden.
    Allerdings weiß ich nicht, wie ich an dieses Format komme. Hier noch ein kleiner Ausschnitt aus der Erklärung:
    Die Kurzbefehle sind nicht über die Kommandozeile nutzbar, sie können/sollen für eigene Software-Anwendungen genutzt werden, die das Telnet Protokoll unterstützen.
    Die Kurzbefehle sind nicht ASCII-codiert, sondern werden binär verwendet. Beispiel: Der Befehl 'O' hat den hexadezimalen Wert 0x4F. Erhält der Telnet-Server diesen Befehl, erwartet er im nächsten empfangenen Byte die Daten wie die Ausgänge geschaltet werden sollen. Sendet man nun über die Konsole O 1, erhält der Server folgende Daten 0x4F 0x20 0x31 (das Leerzeichen hat den Wert 0x20 und die 1 den Wert 0x31). Da nur ein Byte erwartet wird, findet die 0x31 keine Beachtung. Der Wert 0x20 veranlasst den Server dazu den 6. Ausgang zu setzen, da das 6. Bit gesetzt ist.
    Wird O1 über die Konsole gesendet, erhält der Server folgende Daten: 0x4F 0x31, es werden nun die Ausgänge 1, 5 und 6 gesetzt, da das 1., 5. und 6. Bit gesetzt sind.
    Wie kann ich dieses Format erzeugen?


    Gruß David
     

  2. #2
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    Ein Entwickler sollte schon wissen, was das Hexadezimalsystem ist.
     

  3. #3
    Terminator2 Terminator2 ist offline Mitglied Brokat
    Registriert seit
    Aug 2005
    Beiträge
    256
    Dass das Hexadezimal ist, habe ich auch schon gesehen. Die Frage ist nur, warum beispielsweise ein "O" den Wert "0x4F" hat.
    Ich habe bisher den Ascii Code erzeugt und davon den Hexadezimalwert. Das ergibt dann 4F. Leider fehlt die 0x am Anfang. Außerdem muss ich ein Bytearray erzeugen, um die Befehle senden zu können. Also womit soll ich den String dann encodieren, damit die richtigen Bytes rauskommen?
     

  4. #4
    benurb benurb ist offline Mitglied Silber
    Registriert seit
    Dec 2004
    Beiträge
    67
    Ich weiß nicht wie es in .NET ist, aber in PHP ist das 0x das Zeichen dafür, dass die darauffolgende Zahl im Hexadezimal System ist. Also einfach an das 4F das 0x vorne drankleben
    Kann mich aber auch täuschen
     

  5. #5
    Terminator2 Terminator2 ist offline Mitglied Brokat
    Registriert seit
    Aug 2005
    Beiträge
    256
    Die Idee hatte ich auch schon :P Das mit der Ankündigung des Hexadezimalzeichens könnte stimmen... Dann wäre da nur noch das Problem mit dem Umwandeln von den Zeichen in Bytes...
     

  6. #6
    benurb benurb ist offline Mitglied Silber
    Registriert seit
    Dec 2004
    Beiträge
    67
    Ich würde da wohl auf System.Text.Encoding.UTF8.getBytes() tippen
     

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 13.06.09, 12:36
  2. Postfix Telnet hängt nach "mail from:<xx@xxxx.xx>"
    Von spex im Forum Hosting & Webserver
    Antworten: 1
    Letzter Beitrag: 27.04.09, 11:49
  3. 2 Befehle mit Pipe "verbinden"
    Von wpb im Forum Linux & Unix
    Antworten: 5
    Letzter Beitrag: 13.08.07, 17:05
  4. PHP Telnet "Hide your Input"
    Von Cruzifixxx im Forum PHP
    Antworten: 0
    Letzter Beitrag: 03.12.05, 02:03
  5. Wie mache ich solche "Objekte"
    Von designerpeppi im Forum Cinema 4D
    Antworten: 1
    Letzter Beitrag: 23.09.03, 19:44