Hallo Zusammen,
ich habe mal wieder ein Problem, wofür ich eure Hilfe benötige. Ich habe eine App welches über TCP mit meinem Skript kommuniziert. Allerdings habe ich keine Kontrolle darüber, ob die TCP-Verbindung von der App unerbrochen worden ist (z.B. beim schließen der APP), um eine neue Connection zu starten. Eine
fiktive If-Abfrage zum verlassen der Schleife, um einen neue Connection zu starten, habe ich schon eingebunden.
Hier mein Test Skript:
Spoiler anzeigen
Code
;Init
OnAutoItExitRegister("OnAutoItExit")
TCPStartup()
;Init Variablen
$IP='192.168.10.50'
$PORT=54321
$LISTEN=TCPListen($IP, $PORT)
$ACCEPT=0
;Mainloop
While 1
While 1
$ACCEPT=TCPAccept($LISTEN)
If ($ACCEPT>0) Then ExitLoop
Sleep(10)
WEnd
ConsoleWrite('Verbunden'&@CRLF)
While 1
While 1
$RECEIVE=TCPRecv($ACCEPT, 1024)
If Not @error Then ExitLoop
Sleep(10)
WEnd
While 1
$RECEIVE&=TCPRecv($ACCEPT, 1024)
If (@error) Then ExitLoop
WEnd
TCPSend($ACCEPT ,@LF) ;Linefeed -> Acknowledged
ConsoleWrite($RECEIVE & @CRLF)
;If Verbindung der App==Unterbrochen Then ExitLoop ;-> Bei Disconnect der App Schleife verlassen
Sleep(10)
WEnd
WEnd
;Funktionen
Func OnAutoItExit()
TCPCloseSocket($ACCEPT)
TCPShutdown()
EndFunc
Alles anzeigen
Wenn bei jedem Schleifendurchgang ein "TCPAccept($LISTEN)" ausgeführt wird, dann wird die Verbindung zur App kurz getrennt. Was für eine Möglichkeit besteht, die Verbindung zu prüfen ohne eine Unterbrechung zur App hervorzurufen?
Vielen Dank für eure Hilfe!
Gruß
Homer J. S.