Script schlieft ein...?

  • Hallo an Alle,


    es geht um diesen Script:

    [autoit]

    #include <GUIConstantsEx.au3>#include <StaticConstants.au3>#include <WindowsConstants.au3>
    Opt("GUIOnEventMode", 1)

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

    Global $Form1 = GUICreate("TEST", 393, 415, -1, -1)
    GUISetOnEvent(-3, "_Exit")
    TCPStartup()
    $Main_IP = @IPAddress1$Master_IP = "192.168.0.100"$Master_Port = 54545
    Global $iSocket = 0Global $Master = ""

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

    _Master_Verbinden()
    Func _Master_Verbinden() GUISetState(@SW_SHOW, $Form1)
    $Master = "" ; Offline = "", Online = "ONLINE" Do ConsoleWrite("Warte auf Server IP: " & $Master_IP & @CRLF) $iSocket = TCPConnect($Master_IP, $Master_Port) Sleep(1000) Until $iSocket > 0 GUISetState(@SW_HIDE, $Form1)
    _ComputerName_Senden() Sleep(1000) $Master = "ONLINE" ConsoleWrite("Server online." & @CRLF)EndFunc ;==>_Master_Verbinden

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

    While 1 If $Master = "ONLINE" Then Dim $recv = "" $recv &= TCPRecv($iSocket, 1024)
    If StringInStr($recv, "TASKMANAGER") Then MsgBox(0, "Info", "Taskmanager killen.", 10) ;... ;...
    ElseIf StringInStr($recv, "CMD") Then MsgBox(0, "Info", "CMD killen", 5) ;... ;... Else ConsoleWrite("Warte auf Action..." & @CRLF) EndIf
    TCPSend($iSocket, "") If @error Then $Master = "OFFLINE" _Master_Verbinden() EndIf
    EndIf Sleep(100)WEnd

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

    Func _ComputerName_Senden() Local $ComputerName
    $ComputerName = @ComputerName & "|" & @ComputerName & "|" & @ComputerName
    TCPSend($iSocket, $ComputerName) If @error Then TCPCloseSocket($iSocket) $iSocket = 0 GUISetState(@SW_SHOW, $Form1) _Master_Verbinden() EndIfEndFunc ;==>_ComputerName_Senden

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

    Func _Exit() TCPCloseSocket($iSocket) TCPShutdown() ExitEndFunc ;==>_Exit

    [/autoit]


    am Anfang funktioniert alles problemlos bzw. ein anderer Script sendet (TCPSend) zb. "CMD" und dieser Script öffnet MsgBox(0, "Info", "CMD killen", 5) usw. doch nach paar Minuten kommen keine TCPSends mehr an, obwohl Verbindung noch steht (ansonsten würde sich ein Fenster öffnen) reagiert er nicht :( woran kann so was liegen?


    Gruss,
    Automatisator

  • Formatier mal richtig, da erkennt man nicht was nun auskommentiert ist und was nicht.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Hier die (glaube ich) richtige Formatierung:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    Opt("GUIOnEventMode", 1)

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

    Global $Form1 = GUICreate("TEST", 393, 415, -1, -1)
    GUISetOnEvent(-3, "_Exit")
    TCPStartup()
    $Main_IP = @IPAddress1
    $Master_IP = "192.168.0.100"
    $Master_Port = 54545
    Global $iSocket = 0
    Global $Master = ""

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

    _Master_Verbinden()

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

    Func _Master_Verbinden()
    GUISetState(@SW_SHOW, $Form1)
    $Master = "" ; Offline = "", Online = "ONLINE"
    Do
    ConsoleWrite("Warte auf Server IP: " & $Master_IP & @CRLF)
    $iSocket = TCPConnect($Master_IP, $Master_Port)
    Sleep(1000)
    Until $iSocket > 0
    GUISetState(@SW_HIDE, $Form1)
    _ComputerName_Senden()
    Sleep(1000)
    $Master = "ONLINE"
    ConsoleWrite("Server online." & @CRLF)
    EndFunc ;==>_Master_Verbinden

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

    While 1
    If $Master = "ONLINE" Then
    Dim $recv = ""
    $recv &= TCPRecv($iSocket, 1024)
    If StringInStr($recv, "TASKMANAGER") Then
    MsgBox(0, "Info", "Taskmanager killen.", 10) ;... ;...
    ElseIf StringInStr($recv, "CMD") Then
    MsgBox(0, "Info", "CMD killen", 5) ;... ;...
    Else
    ConsoleWrite("Warte auf Action..." & @CRLF)
    EndIf
    TCPSend($iSocket, "")
    If @error Then
    $Master = "OFFLINE"
    _Master_Verbinden()
    EndIf
    EndIf
    Sleep(100)
    WEnd

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

    Func _ComputerName_Senden()
    Local $ComputerName
    $ComputerName = @ComputerName & "|" & @ComputerName & "|" & @ComputerName
    TCPSend($iSocket, $ComputerName)
    If @error Then
    TCPCloseSocket($iSocket)
    $iSocket = 0
    GUISetState(@SW_SHOW, $Form1)
    _Master_Verbinden()
    EndIf
    EndFunc ;==>_ComputerName_Senden

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

    Func _Exit()
    TCPCloseSocket($iSocket)
    TCPShutdown()
    Exit
    EndFunc ;==>_Exit

    [/autoit]
    [autoit]


    Func Ulam($n)
    Return 1
    EndFunc

    [/autoit]


    Rekursion FTW :D

  • Danke für die Formatierung...!


    ich habe es aus SciTE einfach kopiert und hier hinzugefügt dann markiert und auf "Autoit-Quellcode" geklickt... keine Ahnung was ich nun falsch gemacht habe...? :(


    zu dem Script:

    kann es vielleicht daran liegen, wenn Server per TCPSend ständig Daten sendet, (was ja sein muss, bzw. so überprüfe ich ob der Client noch ONLINE ist...) und der Client (der die Daten empfängt und irgendwann nicht mehr reagiert) voll mit Daten ist, und deswegen einschlieft? kann mir das aber nicht ganz so vorstellen, ich weiß es aber nicht was die Ursache ansonsten sein könnte?

    das komische ist ja, das der Client noch verbunden ist, wäre er nicht (bzw. gebe es Probleme im Netzwerk ), dann würde der Script ab Zeile 43 einschalten... ?( wenn ich Server beende dann gibt es auf dem Client TCPSend @error, und das GUI wird angezeigt. (es liegt also nicht am Netzwerk...)

    Warum der Client Script nach eigener Zeit einschlieft bzw. keine Daten mehr von Server empfängt, obwohl er verbunden ist, ist mir ein rätsel... ?(

    Gruss,
    Automatisator

    3 Mal editiert, zuletzt von Automatisator (16. Mai 2012 um 18:06)

  • naja, heute lief ca. 4 Std. alles problemlos bzw. Server und Client(auf anderem PC) -Script gestartet, ca. 4 Std. laufen gelassen...dann auf Button(TCPSend...) geklickt , der Client empfängt problemlos (ist nicht eingeschlafen).... das heißt, manchmal geht es und manchmal nicht... :(

    schein so als gebe es da ein MTU Problem... ?
    gibt es da irgendwelche Unterschiede zw. WindowsXP und Windows 7 die ich bei Autoit beachten muss? in Hilfe ist nichts darüber zu finden, auch nicht in TCP Tutorials.... ?