HI Leute,
ich habe folgendes Problem.Ich bin ja gerade dabei ein Script zu schreiben für meinen eigenen Client, mit dem sich andere meinen Status anschauen/abfragen können.
Habe eben 2 Versionen geschrieben, eine für die Anwender (client) und eine für mich (Server)
Nun habe ich es geschafft, dass wenn die Anwender auf einen Button "Status" klicken , dieser sich zu meinem Server verbindet, das Wort "Statusanfrage" sendet und sich somit versucht den Status zu holen.Mein Server überprüft dann den String auf "Statusanfrage" bzw. auf den binärenwert "13" .
Nun soll sich aber der Server auch mit dem Client verbinden und einen String zurückgeben/senden, bspw. "online". Wie schaffe ich das nun das beide miteinander richtig kommunizieren können.
Anmerkung: Die Funktion des Servers läuft in einer Endlosschleife (was sich ja dann auch ändern muss,weil der ja nicht unendlich senden kann oder?).
Die Funktion des Clients wird nur bei drücken eines Buttons aktiv)
Server (der zurzeit nur empfangen kann):
[autoit]
; Quelltext
TCPStartup()
Global $mainsocket = TCPListen("127.0.0.1", 8001)
; Quelltext
Func Status()
$acceptedSocket = TCPAccept($mainsocket) ; Wir versuchen eine möglicher Verbindung anzunehmen
[/autoit][autoit][/autoit][autoit]If $acceptedSocket <> -1 Then ; Wenn $acceptedSocket ungleich -1 ist, ...
$receivedData = TCPRecv($acceptedSocket, 1024) ; Wenn eine Socketverbindung hergestellt wurde, empfange ein Paket vom Client ($connectedSocket)
If $receivedData = "Statusanfrage" or "13" Then
MsgBox(1,"Server", "Anfrage erhalten " & $receivedData)
EndIf
EndIf
EndFunc
Client(der zurzeit nur senden kann):
[autoit]
Func Status()
TCPStartup()
$mainsocket = TCPListen("127.0.0.1", 8001) ; Den mainsocket erstelle
$socket = TCPConnect("127.0.0.1", 8001) ; Versucht eine Verbindung zum Server aufzubauen und speichert die SocketID in "$socket" ab
If $socket = -1 Then ; Wenn $socket = -1 ist, Fehlermeldung ausgeben
MsgBox(16, "Client: Error", "Die Verbindung zum Server konnte nicht hergestellt werden!") ; Fehlermeldung
EndIf
$sendedBytes = TCPSend($socket,"Statusanfrage") ; Sendet den Text an unseren verbundenen Socket
[/autoit][autoit][/autoit][autoit]If $sendedBytes = 0 Then ; Wenn der Rückgabewert von TCPSend(...) 0 ist, Fehlermeldung ausgeben
MsgBox(16, "Client: Error", "Das Paket konnte nicht gesendet werden.") ; Fehlermeldung
EndIf
TCPCloseSocket($socket)
TCPShutdown()
EndFunc
[/autoit]Danke schoneinmal im vorraus und ich hoffe das ihr mir helfen könnt.