Hallo ,
Ich habe heute meinen Rs-Server fertig geschrieben finde ich
jetzt wollte ich gerne mit den Client anfangen doch jetzt stelle ich mir die frage
wie soll ich das abfangen was der Server zum Client sendet ?
ich hoffe es kann mir jemand helfen ![]()
@Edit : Source vorm Server
Spoiler anzeigen
#RequireAdmin
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Change2CUI=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <Date.au3>
Global $ServerSocket, $ConnectSocket = -1, $RecvSocket
Global $ClientSocket, $SendSocket, $BackToAdress
Global $RecvLen, $StringSplit, $Ip = IniRead("Setting.ini", "Connect", "IP", ""), $Port = IniRead("Setting.ini", "Connect", "PORT", "")
Global $MaxDataTrans = IniRead("Setting.ini", "Config", "MaxDataTrans", ""), $Delimiters = IniRead("Setting.ini", "Config", "Delimiters", ""), $Pfad = IniRead("Setting.ini", "Config", "Pfad", "")
ConsoleWrite("Rs-Remote 0.1 by NetCode 3.0" & @CRLF & "#=> Lade alle Setting.ini Information " & @CRLF & _
"- IP :" & $Ip & @CRLF & "- Port :" & $Port & @CRLF & "- Pfad :" & $Pfad & @CRLF & "- MaxDataTrans :" & $MaxDataTrans & @CRLF & "- Delimierts :" & $Delimiters & @CRLF & "#=> Server ist erfolgreich Gestartet " & @CRLF)
TCPStartup()
$ServerSocket = TCPListen($Ip, $Port)
Do
$ConnectSocket = TCPAccept($ServerSocket)
Until $ConnectSocket <> -1
While 1
$BackToAdress = SocketToIP($ConnectSocket)
$RecvSocket = TCPRecv($ConnectSocket, $MaxDataTrans)
$RecvLen = StringLen($RecvSocket)
If $RecvLen > 1 Then
_Commando($RecvSocket) ; Diese Funktion prüft die eingab ob es ein Befehl ist !
EndIf
WEnd
TCPCloseSocket($ConnectSocket)
TCPShutdown()
Func _Commando($pCommando)
$StringSplit = StringSplit($pCommando, $Delimiters)
If Not @error Then
If $StringSplit[1] == "/start" Then
Run($Pfad & $StringSplit[2] & "\" & $StringSplit[3])
If ProcessExists($StringSplit[3]) Then
BackSendToClient("Sie haben " & $StringSplit[3] & " Gestartet !")
_Log("Sie haben " & $StringSplit[3] & " Gestartet !")
Else
BackSendToClient("Das Program " & $StringSplit[3] & " konnte nicht Gestartet werden !")
_Log("Das Program " & $StringSplit[3] & " konnte nicht Gestartet werden !")
EndIf
EndIf
Else
BackSendToClient("Fehler : Geben sie bitte alle Parameter ein !")
_Log("Fehler : Geben sie bitte alle Parameter ein !")
EndIf
EndFunc ;==>_Commando
Func BackSendToClient($oNachricht)
$ClientSocket = TCPConnect($BackToAdress, $Port)
$SendSocket = TCPSend($ClientSocket, $oNachricht)
EndFunc ;==>BackSendToClient
Func _Log($oText)
$Zeit = _NowTime()
ConsoleWrite("Wann =>" & $Zeit & " | Form =>" & $BackToAdress & " | " & $oText & @CRLF)
EndFunc ;==>_Log
Func SocketToIP($SHOCKET)
Local $sockaddr, $aRet
$sockaddr = DllStructCreate("short;ushort;uint;char[8]")
[/autoit] [autoit][/autoit] [autoit]$aRet = DllCall("Ws2_32.dll", "int", "getpeername", "int", $SHOCKET, _
"ptr", DllStructGetPtr($sockaddr), "int*", DllStructGetSize($sockaddr))
If Not @error And $aRet[0] = 0 Then
$aRet = DllCall("Ws2_32.dll", "str", "inet_ntoa", "int", DllStructGetData($sockaddr, 3))
If Not @error Then $aRet = $aRet[0]
Else
$aRet = 0
EndIf
$sockaddr = 0
[/autoit] [autoit][/autoit] [autoit]Return $aRet
EndFunc ;==>SocketToIP