Hi,
ich habe irgendwo einen/zwei Fehler im Script, die ich beim besten Willen nicht finde :(.
Ich habe zwei Scripte:
Das 1. soll einen Befehl zum 2. senden und das soll dann, wenn der Befehl angekommen ist, sowas wie "OK" zurück zum 1. senden.
Script 1
;Includes:
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#include <GuiListView.au3>
#include <GuiImageList.au3>
#include <GuiIPAddress.au3>
#include <ButtonConstants.au3>
;Options:
Opt("GUIOnEventMode", 1)
;--------
BefehlEingeben()
Func BefehlEingeben()
Opt("GUIOnEventMode",0)
$BForm1 = GUICreate("Befehl eingeben", 344, 110)
$BLabel1 = GUICtrlCreateLabel("Bitte gebe die IP-Adresse ein, an die der Befehl gesendet werden soll:", 0, 0, 332, 17)
$BIPAddress1 = _GUICtrlIpAddress_Create($BForm1, 8, 16, 130, 21)
_GUICtrlIpAddress_Set($BIPAddress1, "127.0.0.1")
$BLabel2 = GUICtrlCreateLabel("Bitte gebe den zu Sendenen Befehl ein:", 0, 40, 192, 17)
$BInput1 = GUICtrlCreateInput("Connect|Parameter", 8, 56, 329, 21)
$BButton1 = GUICtrlCreateButton("Abbrechen", 264, 80, 75, 25, $WS_GROUP)
$BButton2 = GUICtrlCreateButton("Senden", 184, 80, 75, 25,$BS_DEFPUSHBUTTON)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE,$BButton1
GUIDelete($BForm1)
Opt("GUIOnEventMode",1)
ExitLoop
Case $BButton2
$IP=_GUICtrlIpAddress_Get($BIPAddress1)
$Text=GUICtrlRead($BInput1)
GUIDelete($BForm1)
Opt("GUIOnEventMode",1)
SendSth($IP,$Text)
ExitLoop
EndSwitch
WEnd
EndFunc
;------------------
;-------Funktionen---------
Func CreateStatus($Message,$Type=4)
;Eigendlich mehr, der Übersicht halber aber weggelassen ![]()
MsgBox(0,"",$Message)
EndFunc
Func SendSth($IP,$Befehl,$Call="",$Parameter="")
TCPStartup()
$socket=TCPConnect($IP,4321)
If $socket=-1 Then
CreateStatus("Fehler: Verbindung zu "&$IP&" konnte nicht hergestellt werden!",3)
TCPCloseSocket($socket)
TCPShutdown()
Else
$sendedBytes=TCPSend($socket,$Befehl)
CreateStatus("'"&$Befehl&"' -> '"&$IP&"'",1)
If $sendedBytes=0 Then
CreateStatus("Befehl konnte nicht gesendet werden",3)
TCPCloseSocket($socket)
TCPShutdown()
Else
TCPCloseSocket($socket)
TCPShutdown()
GetSth($IP,$Call,$Parameter)
EndIf
EndIf
EndFunc
Func GetSth($IP,$Call="",$Parameter="")
;Auf Antwort warten
TCPStartup()
$mainsocket=TCPListen($IP,4321)
While 1
$acceptedSocket = TCPAccept($mainsocket)
If $acceptedSocket<>-1 Then ;Etwas empfangen
$Data = TCPRecv($acceptedSocket, 2048) ;$Data = Empfangener Text
MsgBox(0,"1","Antwort erhalten: "&$Data)
EndIf
TCPCloseSocket($acceptedSocket)
TCPShutdown()
WEnd
TCPShutdown()
ToolTip("")
EndFunc
Script 2
;TCP starten
TCPStartup()
Global $mainsocket
$mainsocket = TCPListen("127.0.0.1",4321)
AdlibRegister("WaitForMsg",100)
While 1
Sleep(2000)
WEnd
Func WaitForMsg()
Global $Data
$acceptedSocket = TCPAccept($mainsocket)
If $acceptedSocket<>-1 Then ;Etwas empfangen
MsgBox(0,"2","Etwas empfangen...")
$Data = TCPRecv($acceptedSocket, 2048) ;$Data = Empfangener Text
$Data=StringSplit($Data,"|")
If $Data[1]="Connect" Or $Data[1]="Test" Or $Data[1]="Test" Or $Data[1]="Test" Or $Data[1]="Test" Or $Data[1]="Test" Then ;Überprüfen, ob Funktion existiert
Call($Data[1])
EndIf
TCPCloseSocket($acceptedSocket)
EndIf
TCPShutdown()
EndFunc
Func Connect()
Answer("Jo, hat geklappt!")
EndFunc
Func Answer($Text)
AdlibUnRegister("WaitForMsg")
Sleep(100)
TCPStartup()
$socket=TCPConnect("127.0.0.1",4321)
If $socket=-1 Then
MsgBox(16,"2","Nicht gefunden")
TCPCloseSocket($socket)
TCPShutdown()
Else
MsgBox(0,"","ANTWORT")
$sendedBytes=TCPSend($socket,$Text)
If $sendedBytes=0 Then
MsgBox(16,"2","Nichts gesendet")
TCPCloseSocket($socket)
TCPShutdown()
Else
TCPCloseSocket($socket)
TCPShutdown()
EndIf
EndIf
AdlibRegister("WaitForMsg",100)
EndFunc
Ursprünglich konnte man noch die Nachricht zum 2. Script senden, nur das hat nicht geantwortet. Aber irgendwie hab ich das bei der Fehlersuche jetzt so verbaut, dass nichtmal mehr das funktioniert
.
Wäre nett, wenn jemand helfen könnte, der sich damit auskennt.