Hallo Timo,
erst einmal vielen Dank für Deine Hilfsbereitschaft. Wer eine vernünftige Antwort erwartet muss auch vernünftig Fragen beantworten.
Das SocketTool habe ich von Catalyst (.com) und kann es für alle nur wärmstens empfehlen. Doch leider hat das Tool das gleiche Problem.
das mit dem TCPClient war ein Versuch aus reiner Verzweiflung, welcher jedoch zu dem gleichen Ergebniss geführt hat.
Einzelne Bytes sind nicht das Problem, aber beim Username und Passwort akzeptiert der TelNet-Server nur max. 2 Bytes, also z.B: vbcrlf (1310)
Der Telnet-Server ist ein IP-Switsch und in der Beschreibung steht, dass die Kurzbefehle in einzelnen Bytes durch Semikolon getrennt übertragen werden. Also zum Einschalten und nach 12 Minuten und 30 Sekunden automatisch aus:
'E' 0x00 0x0C 0x1E
Im Moment habe ich das Problem mitels einer For-Schleife gelöst, welche jedoch keine saubere programmierung darstellt:
Dim User As String = "admin"
Dim result As String = String.Empty
For I As Integer = 0 To User.Count - 1
SocketSendReceive1(User.Substring(I, 1), tempSocket)
Next
SocketSendReceive1(vbCrLf, tempSocket)
result = SocketSendReceive1(vbCrLf, tempSocket)
result = SocketSendReceive1("E", tempSocket)
result = SocketSendReceive1("", tempSocket)
result = SocketSendReceive1("X", tempSocket)
result = SocketSendReceive1(vbCrLf, tempSocket)
tempSocket.Disconnect(False)
Private Shared Function SocketSendReceive1(ByVal _Text As String, ByVal S1 As Socket) As String
Dim request As String = _Text
Dim bytesSent As [Byte]() = Encoding.UTF8.GetBytes(request & vbCrLf)
Dim bytesReceived(255) As [Byte]
S1.Send(bytesSent, bytesSent.Length, SocketFlags.None)
Dim bytes As Int32
Dim page As [String] = ""
Do
bytes = S1.Receive(bytesReceived, bytesReceived.Length, SocketFlags.None)
page = page + Encoding.ASCII.GetString(bytesReceived, 0, bytes)
Loop While bytes = 256
Return page
End Function
Auch wenn ich durch eine Textbox die Keycode direkt einzeln sende geht alles, nur, ich muss das alles automatisch haben, also ohne dass der User sein Name und Passwort per Tastatur eingibt.
Weist Du eine Lösung für das Problem?
Gruß
Thomas