echtzeit telnet server. aber will den garnit in echtzeit

  • Hallo, ich wollte mir son kleinen Server programmieren, den ich über die CMD via Telnet steuern kann. nun nimmt er aber alle eingaben in echtzeit!
    d.h. wenn cih help eintippe, nimmt er 4 befehle auf h,e,l,p anstatt zu warten, bis in der CMD enter gedrückt wurde...

    ich hoffe jeder versteht, wo das problem liegt. (der code ist unten im spoiler)

    l.g. Jonathan

    Spoiler anzeigen
    [autoit]


    While 1
    TCPStartup()

    [/autoit] [autoit][/autoit] [autoit]

    $Socket = TCPListen(@IPAddress1, 203)

    [/autoit] [autoit][/autoit] [autoit]

    Do
    $Acc = TCPAccept($Socket)
    Until $Acc <> -1

    [/autoit] [autoit][/autoit] [autoit]

    TCPSend($Acc, "X ======= Moewe Server ====== X" & @CRLF)
    TCPSend($Acc, "X send help for help X" & @CRLF)
    TCPSend($Acc, "X ========================== X" & @CRLF)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    $DATEN = TCPRecv($acc, 500)
    If $DATEN = "time" Then TCPSend($Acc, @HOUR & ":" & @MIN & ":" & @SEC & @CRLF)
    If $DATEN = "date" Then Send(@MDAY & "." & @MON & "." @YEAR)
    If $DATEN = "help" Then Send("Commands:" & @CRLF & "time" & @CRLF & "date" & @CRLF & "exit" & @CRLF & "help")
    If $DATEN = "exit" Then TCPCloseSocket($Acc)

    [/autoit] [autoit][/autoit] [autoit]

    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    TCPCloseSocket($Socket)
    TCPCloseSocket($Acc)
    WEnd
    TCPShutdown()

    [/autoit] [autoit][/autoit] [autoit]

    Exit

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • warum addierst Du die Eingaben nicht, bis ein Enter kommt und validierst dann gegen Deine Befehle?

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    • Offizieller Beitrag

    Hallo

    Auf jedenfall ein Workaround (nicht getestet)

    Spoiler anzeigen
    [autoit]

    TCPStartup()
    $Socket = TCPListen(@IPAddress1, 203)
    If @error Then Exit
    While 1
    Do
    $Acc = TCPAccept($Socket)
    Until $Acc <> -1

    [/autoit] [autoit][/autoit] [autoit]

    TCPSend($Acc, "X ======= Moewe Server ====== X" & @CRLF)
    TCPSend($Acc, "X send help for help X" & @CRLF)
    TCPSend($Acc, "X ========================== X" & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    Dim $DATEN
    While 1
    $DATEN &= TCPRecv($Acc, 1024)
    If @error Then ExitLoop
    If StringLen($DATEN) > 3 Then
    Switch StringLeft($DATEN,4)
    Case "time"
    TCPSend($Acc, @HOUR & ":" & @MIN & ":" & @SEC & @CRLF)
    Case "date"
    TCPSend($Acc,@MDAY & "." & @MON & "." & @YEAR)
    Case "help"
    TCPSend($Acc,"Commands:" & @CRLF & "time" & @CRLF & "date" & @CRLF & "exit" & @CRLF & "help")
    Case "exit"
    ExitLoop
    EndSwitch
    $DATEN = StringTrimLeft($DATEN,4)
    EndIf
    Sleep(500)
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    TCPCloseSocket($Acc)
    WEnd
    TCPShutdown()

    [/autoit] [autoit][/autoit] [autoit]

    Exit

    [/autoit]

    Gruß
    Spider