Neuling - Frage zu Client Server Listening

  • Erstmal Hallo zusammen,

    ich habe mich nun auch entschlossen mit AutoIt anzufangen und hier gleich meine erste Frage:

    Und zwar habe ich das Server - Client Beispiel von AutoWiki genommen und dieses stark verkürtzt, da ich mit der SocketToIP Funktion nicht viel anfangen konnte.
    Das gekürtzte Skript funktioniert auch soweit aber nun zu meiner Frage:
    1. Server wird gestartet (gekürzte Variante)
    2. Client wird gestartet (nur Port geändert und Inputbox eingefügt für die IP)
    3. Alles funktioniert
    4. Client wird geschlossen
    5. Client wird gestartet

    Und jetzt erhält der Server keine Daten mehr, bis man ihn schließt und samt Clienten neu startet, wie kann ich das neustarten des Servers umgehen?

    Mein eigener Versuch leider ohne erfolg:

    Veränderte Servervariante aus dem AutoIt Beispielen (Wiki)

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>

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

    TCPStartup()
    Dim $ip=@IPAddress1
    Dim $port=6112

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

    Dim $mainsocket=TCPListen($ip,$port,100)

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

    GUICreate("Supportfenster",200,400,10,10)
    Dim $textfenster=GUICtrlCreateEdit("",10,10,180,350)
    GUISetState()

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

    Dim $client=-1

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

    Dim $msg,$nachricht

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

    While 1
    if $client<> -1 Then
    $msg = GUIGetMsg()

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

    If $msg = $GUI_EVENT_CLOSE Then ExitLoop

    $nachricht=TCPRecv($client,1000)

    If $nachricht <> "" Then GUICtrlSetData($textfenster,"user >> " & $nachricht & @CRLF & guictrlread($textfenster))
    Else
    Do
    $client=TCPAccept($mainsocket)
    Until $client <> -1
    EndIf
    WEnd

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

    TCPShutdown()

    [/autoit]

    Client Variante aus dem Wiki (die ersten 6 Zeilen wurden verändert)

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>

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

    TCPStartUp()

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

    Dim $szIPADDRESS =InputBox ("IP","Bitte IP des Servers eingeben")
    Dim $nPORT = 6112

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

    Dim $ConnectedSocket = -1

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

    $ConnectedSocket = TCPConnect($szIPADDRESS,$nPORT)

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

    Dim $szData

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

    ; If there is an error... show it
    If @error Then
    MsgBox(4112,"Error","TCPConnect failed with WSA error: " & @error)
    ; If there is no error loop an inputbox for data
    ; to send to the SERVER.
    Else
    ;Loop forever asking for data to send to the SERVER
    While 1
    ; InputBox for data to transmit
    $szData = InputBox("Data for Server",@LF & @LF & "Enter data to transmit to the SERVER:")

    ; If they cancel the InputBox or leave it blank we exit our forever loop
    If @error Or $szData = "" Then ExitLoop

    ; We should have data in $szData... lets attempt to send it through our connected socket.
    TCPSend($ConnectedSocket,$szData)

    ; If the send failed with @error then the socket has disconnected
    ;----------------------------------------------------------------
    If @error Then ExitLoop
    WEnd
    EndIf

    [/autoit]

    Falls ich etwas in der Suchfunktion übersehen haben sollte tut es mir leid, danke für alle konstruktiven Beiträge

    Gruß
    ret0x