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
#include <GUIConstants.au3>
TCPStartup()
Dim $ip=@IPAddress1
Dim $port=6112
Dim $mainsocket=TCPListen($ip,$port,100)
[/autoit] [autoit][/autoit] [autoit]GUICreate("Supportfenster",200,400,10,10)
Dim $textfenster=GUICtrlCreateEdit("",10,10,180,350)
GUISetState()
Dim $client=-1
[/autoit] [autoit][/autoit] [autoit]Dim $msg,$nachricht
[/autoit] [autoit][/autoit] [autoit]While 1
if $client<> -1 Then
$msg = GUIGetMsg()
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
TCPShutdown()
[/autoit]Client Variante aus dem Wiki (die ersten 6 Zeilen wurden verändert)
Spoiler anzeigen
#include <GUIConstants.au3>
TCPStartUp()
[/autoit] [autoit][/autoit] [autoit]Dim $szIPADDRESS =InputBox ("IP","Bitte IP des Servers eingeben")
Dim $nPORT = 6112
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
Falls ich etwas in der Suchfunktion übersehen haben sollte tut es mir leid, danke für alle konstruktiven Beiträge
Gruß
ret0x