Server/Client option

  • Hallo,

    ich habe für meinen Gameserver ein kleines Programm geschrieben. Lokal auf dem Server läuft das Programm.

    Nun zur eigentlichen Frage.

    Ist es möglich, das Programm von einem anderen PC aus zu bedienen? (Mit dem gleichen script wie auf dem server liegt?

    Für Hilfe bin ich sehr dankbar

  • Ich schau mal nach: :Glaskugel: .

    Also ohne das Script sagt die Glaskugel, kannst Du keine Antwort bekommen, außer: "Kann möglich sein!" und das bedeutet?
    RICHTIG! Du solltest das Script schon posten.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • ich zitiere mich mal selbst...
    Client sendet an Server nicht übers Inet

  • Hier das client script

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <MsgBoxConstants.au3>
    #include <String.au3>
    #include <GuiStatusBar.au3>


    Dim $VerbindeTCP = -1
    Const $MultiServerIP = "192.168.178.43"
    Const $MultiServerPortTCP = "33150"
    Local $send


    TCPStartup()


    $onIcon = @ScriptDir & "\icons\Online.jpg"
    $officon = @ScriptDir & "\icons\Offline.jpg"


    $server1Path = @ScriptDir & "Server 1\css\start.bat"
    $server1WorkDir = @ScriptDir & "Server 1\css\"
    $server2Path = @ScriptDir & "Server 2\css\start.bat"
    $server2WorkDir = @ScriptDir & "Server 2\css\"
    $server3Path = @ScriptDir & "Server 3\css\start.bat"
    $server3WorkDir = @ScriptDir & "Server 3\css\"
    $server4Path = @ScriptDir & "Server 4\css\start.bat"
    $server4WorkDir = @ScriptDir & "Server 4\css\"
    $server5Path = @ScriptDir & "Server 5\css\start.bat"
    $server5WorkDir = @ScriptDir & "Server 5\css\"
    $server6Path = @ScriptDir & "Server 6\css\start.bat"
    $server6WorkDir = @ScriptDir & "Server 6\css\"


    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("CS-S Server Control Panel", 360, 600, 283, 249)
    $server1 = GUICtrlCreateButton("Starte/Stoppe Server 1", 32, 45, 155, 25)
    $server2 = GUICtrlCreateButton("Starte/Stoppe Server 2", 32, 75, 155, 25)
    $server3 = GUICtrlCreateButton("Starte/Stoppe Server 3", 32, 105, 155, 25)
    $server4 = GUICtrlCreateButton("Starte/Stoppe Server 4", 32, 135, 155, 25)
    $server5 = GUICtrlCreateButton("Starte/Stoppe Server 5", 32, 165, 155, 25)
    $server6 = GUICtrlCreateButton("Starte/Stoppe Server 6", 32, 195, 155, 25)


    $all = GUICtrlCreateButton("Alle Starten/Stoppen", 32, 245, 155, 25)


    $ram = GUICtrlCreateButton("Ram Auslastung", 32, 300, 155, 25)


    $wakeup = GUICtrlCreateButton("Rechner Starten", 32, 335, 155, 25)


    $icon1 = GUICtrlCreatePic("", 208, 45, 100, 25)
    $icon2 = GUICtrlCreatePic("", 208, 75, 100, 25)
    $icon3 = GUICtrlCreatePic("", 208, 105, 100, 25)
    $icon4 = GUICtrlCreatePic("", 208, 135, 100, 25)
    $icon5 = GUICtrlCreatePic("", 208, 165, 100, 25)
    $icon6 = GUICtrlCreatePic("", 208, 195, 100, 25)


    $leiste = _GUICtrlStatusBar_Create($Form1)
    _GUICtrlStatusBar_SetText($leiste,"TCP gestartet...",0,0)
    GUISetState(@SW_SHOW, $Form1)
    #EndRegion ### END Koda GUI section ###


    While 1
    connection()
    checkOnlineStatus()
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    TCPShutdown()
    Exit
    Case $server1
    ;startServer($server1Path, $server1WorkDir)
    SendToServer("startServer1")
    Case $server2
    ;startServer($server2Path, $server2WorkDir)
    SendToServer("startServer2")
    Case $server3
    ;startServer($server3Path, $server3WorkDir)
    SendToServer("startServer3")
    Case $server4
    ;startServer($server4Path, $server4WorkDir)
    SendToServer("startServer4")
    Case $server5
    ;startServer($server5Path, $server5WorkDir)
    SendToServer("startServer5")
    Case $server6
    ;startServer($server6Path, $server6WorkDir)
    SendToServer("startServer6")
    Case $all
    SendToServer("startAll")
    Case $ram
    SendToServer("giveMeRam")
    _RAM()
    Case $wakeup
    wakeup()
    EndSwitch
    WEnd


    Func SendToServer($befehl)
    $send = $befehl
    TCPSend($VerbindeTCP,$send)
    EndFunc


    Func startServer($serverPath, $workDir)
    If( FileExists($serverPath) ) Then
    Run($serverPath, $workDir)
    Else
    MsgBox(0, "Server Path Fehler", $serverPath & " -> wurde nicht gefunden")
    EndIf
    EndFunc


    Func checkOnlineStatus()
    checkIfServerOnline("Toms Server 1", $icon1)
    checkIfServerOnline("Toms Server 2", $icon2)
    checkIfServerOnline("Toms Server 3", $icon3)
    checkIfServerOnline("Toms Server 4", $icon4)
    checkIfServerOnline("Toms Server 5", $icon5)
    checkIfServerOnline("Toms Server 6", $icon6)
    EndFunc


    Func _RAM()


    Local $aMem = MemGetStats()
    Local $aMemTot = $aMem[1] - $aMem[2]
    Local $aGesamt = Round($aMemTot / $aMem[1] * 100)
    $backWert = Round(($aMemTot / 1024) / 1024, 3)
    MsgBox("RAM", "RAM Auslastung", "RAM Auslastung in GB : " & $backWert & @CRLF & @CRLF & "RAM Auslastung in % : " & $aGesamt & "%")


    EndFunc


    Func checkIfServerOnline($title, $iconControl)
    If WinExists ($title, "") Then
    GUICtrlSetImage($iconControl, $onIcon)
    Else
    GUICtrlSetImage($iconControl, $offIcon)
    EndIf
    EndFunc


    Func wakeup()


    Local $sMacAddress = StringReplace("00:00:00:00:00:00", ":", ""), _
    $sIpAddress = "192.168.178.255", _
    $iPort = 9
    $sMagicPacket = "FFFFFFFFFFFF"


    For $i = 1 To 16
    $sMagicPacket &= $sMacAddress
    Next


    $sMagicPacket = _HexToString($sMagicPacket)


    UDPStartup()


    $hServer = UDPOpen($sIpAddress, $iPort)
    UDPSend($hServer, $sMagicPacket)


    UDPCloseSocket($hServer)
    UDPShutdown()
    MsgBox(0, "Wakeup", "Rechner wurde gestartet")


    EndFunc


    Func connection()
    $VerbindeTCP = TCPConnect($MultiServerIP,$MultiServerPortTCP)
    _GUICtrlStatusBar_SetText($leiste,"TCP Verbindung wird aufgebaut...",0,0)
    If TCPRecv($VerbindeTCP,2) = "ok" Then
    _GUICtrlStatusBar_SetText($leiste,"TCP Verbindung hergestellt!",0,0)
    ElseIf @error Then
    _GUICtrlStatusBar_SetText($leiste,"Die TCP Verbindung schlug fehl, weil: "&@error,0,0)
    EndIf

  • Moin Moin diablisch.

    Vorschlag, den Du umsetzen könntest und es ist ein Gedankengang.

    Du läßt vom Client z. B. über das Intranet (das ist nicht das Internet !!!), auf dem Server / Server-PC eine
    Datei erstellen z. B. in eine Ini-Datei einen Eintrag erstellen. Dieser könnte z. B. "Client1 = 1" lauten und
    dann muß das Script auf dem Server / Server-PC darauf reagieren.

    Solange Du vom Client etwas auf den Server / Server-PC speichern kannst, sollte es funktionieren. Oder der

    Server / Server-PC holt sich regelmäßig Daten vom Client ab und reagiert dann darauf.

    Ich habe mal ein Script geschrieben, das auf einem Netzwerk-PC (PDF-Printer-PC) alle 15 Minuten überprüft,
    ob etwas von den Client in den Ordner "pdf_printl" auf dem Netzwerk-PC gespeichert wurde. Wenn, dann
    wird es ausgedruckt und anschließend in den Ordner "pdf_archiv" verschoben (move). Die Client speichern
    die Datei lokal auf dem Anwender-PC und kopieren dann die Datei in den o. g. Ordner auf dem Server /
    Server-PC. Leider habe ich nur die Exe, was Dir nicht helfen wird. Ich weiß nicht, ob ich das Script dafür so
    schnell finde, da es auf einer der AutoIt-Archiv-DVD ist oder auf der Linkstation. Wenn ich es finde, poste
    ich es. Nur derzeitig habe ich wenig Zeit.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Soweit bin ich mit dem server und dem client fertig! Musste lange überlegen wie das funktionieren soll!

    Und somit habe ich das nächste problem! Wenn ich vom client den Button drücke, startet er mir eine Batch datei die wiederum das Programm startet. Soweit so gut!
    Welchen code muss ich verwenden, dass mir der Server eine Antwort auf dem client schickt, dass dieses programm online ist!

    Vorher hatte ich das script auf dem Server und er hat mir das auch gesagt, dass das programm online ist!

    Code lautete so:

    Func checkOnlineStatus()
    checkIfServerOnline("Toms Server 1", $icon1)
    checkIfServerOnline("Toms Server 2", $icon2)
    checkIfServerOnline("Toms Server 3", $icon3)
    checkIfServerOnline("Toms Server 4", $icon4)
    checkIfServerOnline("Toms Server 5", $icon5)
    checkIfServerOnline("Toms Server 6", $icon6)


    EndFunc

    Wie bringe ich den server dazu, dass er das an den Client meldet?

    Vielen Dank

  • Wie bringe ich den server dazu, dass er das an den Client meldet?

    Ich gehe davon aus, dass du dieses Script nicht geschrieben hast!
    Ansonsten wüßtest du, was in den einzelnen Funktionen abläuft und wüßtest auch, was UDPsend()/TCPsend() machen!

  • ...

    Wie bringe ich den server dazu, dass er das an den Client meldet?

    ...

    Hast DU mein letzten Beitrag gelesen?
    Ich frage nur, wiel die Frage dort bereits beantwortet ist.
    Wenn ich mich schlecht ausgedrückt habe, bitte ich meine Wortwahl / meinen Satzaufbau - stellung zu entschuldigen.
    Du darfst gerne Fragen stellen, aber davon mal ausgehend, das Du den letzten Beitrag von mir gelesen hast, mußt Du
    ihn auch verstehen und sonst ggf. nachfragen. Eines nach dem anderen, so sagt mal doch bei Euch. Und wenn das obere
    geklärt ist, greifst Du dir an den KOpf und sagst dir dann, das der letzte Beitrag von Dir damit beantwortet ist.

    Nimm es nicht persönlich, ich bin gerade zickig, weil ich Lust drauf habe. ;)

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Hallo diablisch,

    Alina hat dir die Antwort ja bereits gegeben.

    Du musst deine Daten in einer Datei ablegen, die lässt du dann überprüfen und je nach Eintrag kannst du automatisiert Abläufe starten.

    Ich gehe mal davon aus das er prüfen soll ob der Server online ist, wenn nicht soll er gestartet werden.

  • Hallo diablisch,

    am besten du schreibst was du alles weißt und was du mit dem Script vor hast / was es können muss.

    Versuch das ganze so genau wie nur irgendwie möglich zu beschreiben, hast du das getan, wird dir ganz sicher jemand helfen.

    Einmal editiert, zuletzt von nwmbd (24. September 2016 um 20:22)

  • Guten Tag.


    So, ich habe mir überlegt wie ich das haben möchte:
    Dazu lade ich erst mal als anhang den das alte lokale Programm das auf dem Server lief hoch! Das Programm war Fertig!

    Lokal Server alt --> Lief ohne Probleme lokal auf dem Server. So wollte ich das auf dem Client haben.


    Server --> ist die Datei auf dem Server /macht eine Console und nimmt die eingaben vom client entgegen:
    Client --> ist die andere Datei die auf dem Client ist / Mit dieser sollen die eingaben an den Server gesendet werden. Das Senden und das annehmen funktionieren bereits!

    Das eigenliche Problem liegt daran, dass der Server die Statusmeldung nicht an den Client schickt! Das sind z.B. die zwei icons online und offline. Lokal funktioniert es ja...

    Dazu habe ich noch ein Bild zur Veranschaulichung.

    Ich hoffe die Infos reichen für die Hilfe