1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Krassus1547

Beiträge von Krassus1547

  • Script RAM Nutzung wird immer höher

    • Krassus1547
    • 24. Dezember 2013 um 00:13

    Guten Abend,

    mir ist aufgefallen, dass mein Serverprogramm sich mit jedem verarbeiteten Befehl des Clients mehr Ram gönnt. Nach 1 Stunde lag die Nutzung bei ca 100mb. Wenn ich den Client gestoppt habe, ist die Nutzung nicht runter gegangen.

    Gibt es eine Möglichkeit die RAM-Nutzung zu begrenzen, bzw. den RAM zu entleeren oder liegt der Fehler im Script?

    Serverscript

    Spoiler anzeigen
    [autoit]


    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Outfile_x64=starter.exe
    #AutoIt3Wrapper_Change2CUI=y
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

    [/autoit] [autoit][/autoit] [autoit]

    #include <Constants.au3>
    #include <File.au3>
    #include <array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ;... <Username> <ServerNo> <RAM> <Passwort>

    [/autoit] [autoit][/autoit] [autoit]

    If $CmdLine[0] < 1 Then Exit

    [/autoit] [autoit][/autoit] [autoit]

    $Process = Run("java -Dfile.encoding=utf-8 -Djline.terminal=jline.UnsupportedTerminal -server -Xmx" & $CmdLine[3] & "M -jar D:\Minecraft_Server" & $CmdLine[1] & "\Server_" & $CmdLine[2] & "\minecraft_server.jar nogui -nojline", "D:\Minecraft_Server" & $CmdLine[1] & "\Server_" & $CmdLine[2] & "", @SW_HIDE, $STDIN_CHILD + $STDOUT_CHILD)
    $ticker = TimerInit()

    [/autoit] [autoit][/autoit] [autoit]

    If $Process Then
    WinSetTitle("starter.exe", "", $Process)
    Else
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc"), $f_COMError = False

    [/autoit] [autoit][/autoit] [autoit]

    TCPStartup()
    $asocket = TCPListen("176.57.141.178", 1)
    $try = 0
    While 1
    Do
    $acceptedSocket = TCPAccept($asocket)
    Until $acceptedSocket <> -1
    $waittimer = TimerInit()
    Do
    $receivedData = TCPRecv($acceptedSocket, 1024)
    Until $receivedData <> "" Or TimerDiff($waittimer) > 60000
    $authstring = $CmdLine[1] & "|;:|" & $CmdLine[4]
    If $receivedData == $authstring And $try < 4 Then
    TCPSend($acceptedSocket, "O.K.")
    ConsoleWrite("[" & @HOUR & ":" & @MIN & ":" & @SEC & "]: Authentication from " & SocketToIP($acceptedSocket) & " successful!" & @CRLF)
    Do
    $receivedData = TCPRecv($acceptedSocket, 1024)
    Until $receivedData <> "" Or TimerDiff($waittimer) > 60000
    ConsoleWrite("[" & @HOUR & ":" & @MIN & ":" & @SEC & "]: Incoming Command: |" & $receivedData & "| from " & SocketToIP($acceptedSocket) & @CRLF)
    If $receivedData == "multiple" Then
    Do
    $receivedData = TCPRecv($acceptedSocket, 1024)
    If $receivedData == "list" Then
    TCPSend($acceptedSocket, GetOnlinePlayer())
    ElseIf $receivedData == "maxram" Then
    TCPSend($acceptedSocket, $CmdLine[3])
    ElseIf $receivedData == "useram" Then
    $ramarr = ProcessGetStats($Process)
    $ramarr = $ramarr[0] / 1024 / 1024
    If StringInStr($ramarr, ".") Then $ramarr = StringTrimRight($ramarr, StringLen($ramarr) - StringInStr($ramarr, ".") + 1)
    TCPSend($acceptedSocket, $ramarr)
    ElseIf $receivedData == "usecpu" Then
    $cpuarr = _ProcessListProperties($Process)
    TCPSend($acceptedSocket, StringToBinary($cpuarr[1][6] / 10))
    ElseIf $receivedData == "uptime" Then
    TCPSend($acceptedSocket, GetServerUptime())
    EndIf
    Until $receivedData == "multipleend" Or TimerDiff($waittimer) > 60000 Or $receivedData == "quit"
    If $receivedData == "quit" Or $receivedData == "multipleend" Then ConsoleWrite("[" & @HOUR & ":" & @MIN & ":" & @SEC & "]: Connection to " & SocketToIP($acceptedSocket) & " has been reset!" & @CRLF)
    If TimerDiff($waittimer) > 60000 Then ConsoleWrite("[" & @HOUR & ":" & @MIN & ":" & @SEC & "]: Lost connection to " & SocketToIP($acceptedSocket) & @CRLF)
    Else
    If $receivedData == "list" Then
    TCPSend($acceptedSocket, GetOnlinePlayer())
    ElseIf $receivedData == "uptime" Then
    TCPSend($acceptedSocket, GetServerUptime())
    ElseIf $receivedData == "getserverlog" Then
    $logfile = FileOpen("D:\Minecraft_Server" & $CmdLine[1] & "\Server_" & $CmdLine[2] & "\server.log",0)
    If $logfile == -1 Then
    TCPSend($acceptedSocket,"-1")
    ConsoleWrite("[" & @HOUR & ":" & @MIN & ":" & @SEC & "]: Failed to open Logfile!" & @CRLF)
    Else
    $rline = ""
    If _FileCountLines("D:\Minecraft_Server" & $CmdLine[1] & "\Server_" & $CmdLine[2] & "\server.log") > 50 Then
    $i = _FileCountLines("D:\Minecraft_Server" & $CmdLine[1] & "\Server_" & $CmdLine[2] & "\server.log") - 49
    Else
    $i = 1
    EndIf
    Do
    $lnread = FileReadLine($logfile,$i)
    If IsString($lnread) Then
    $rline &= $lnread&@CRLF
    $i = $i+1
    Else
    $i = _FileCountLines("D:\Minecraft_Server" & $CmdLine[1] & "\Server_" & $CmdLine[2] & "\server.log")+1
    EndIf
    Until $i = _FileCountLines("D:\Minecraft_Server" & $CmdLine[1] & "\Server_" & $CmdLine[2] & "\server.log")+1
    TCPSend($acceptedSocket, $rline)
    FileClose($logfile)
    $rline = ""
    ConsoleWrite("[" & @HOUR & ":" & @MIN & ":" & @SEC & "]: Connection to " & SocketToIP($acceptedSocket) & " has been reset!" & @CRLF)
    EndIf
    ElseIf TimerDiff($waittimer) > 60000 Then
    ConsoleWrite("[" & @HOUR & ":" & @MIN & ":" & @SEC & "]: Lost connection to " & SocketToIP($acceptedSocket) & @CRLF)
    ElseIf $receivedData == "quit" Then
    ConsoleWrite("[" & @HOUR & ":" & @MIN & ":" & @SEC & "]: Connection to " & SocketToIP($acceptedSocket) & " has been reset!" & @CRLF)
    Else
    StdinWrite($Process, $receivedData & @CRLF)
    EndIf
    EndIf
    TCPCloseSocket($acceptedSocket)
    $try = 0
    ElseIf $receivedData == "quit"
    ConsoleWrite("[" & @HOUR & ":" & @MIN & ":" & @SEC & "]: Connection to " & SocketToIP($acceptedSocket) & " has been reset!" & @CRLF)
    TCPCloseSocket($acceptedSocket)
    Else
    ConsoleWrite("[" & @HOUR & ":" & @MIN & ":" & @SEC & "]: Authentication failed from " & SocketToIP($acceptedSocket) & @CRLF)
    TCPSend($acceptedSocket, "Wrong password or username!")
    TCPCloseSocket($acceptedSocket)
    $try = $try + 1
    If $try > 3 Then
    ConsoleWrite("[" & @HOUR & ":" & @MIN & ":" & @SEC & "]: Too many failed authentications! Sleeping 2 min." & @CRLF)
    TCPCloseSocket($asocket)
    Sleep(120000)
    $try = 0
    $asocket = TCPListen("176.57.141.178", 1)
    ConsoleWrite("[" & @HOUR & ":" & @MIN & ":" & @SEC & "]: Listening..." & @CRLF)
    EndIf
    EndIf
    WEnd
    TCPShutdown()
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    Func GetOnlinePlayer()
    StdinWrite($Process, "list" & @CRLF)
    $logfile = FileOpen("D:\Minecraft_Server" & $CmdLine[1] & "\Server_" & $CmdLine[2] & "\server.log", 0)
    If $logfile == -1 Then
    FileClose($logfile)
    Return "0/0"
    Else
    $atime = TimerInit()
    Do
    $text = FileReadLine($logfile, _FileCountLines("D:\Minecraft_Server" & $CmdLine[1] & "\Server_" & $CmdLine[2] & "\server.log") - 1)
    Until StringInStr($text, "There are ") <> 0 Or StringInStr($text, "Es sind ") <> 0 Or TimerDiff($atime) > 10000
    If StringInStr($text, "/INFO") == 0 Then
    $pos = StringInStr($text, "/")
    Else
    $pos = StringInStr($text, "/", 0, 2)
    EndIf
    $pos1 = StringInStr($text, " ", 0, 5)
    $pos2 = StringInStr($text, " ", 0, 6)
    $player = StringTrimRight($text, StringLen($text) - $pos2)
    $player = StringTrimLeft($player, $pos1)
    FileClose($logfile)
    $test = ""
    Return $player
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func GetServerUptime()
    $zeit = TimerDiff($ticker) / 1000
    If StringInStr($zeit, ".") > 0 Then $zeit = StringTrimRight($zeit, StringLen($zeit) - StringInStr($zeit, ".") + 1)
    If $zeit < 60 Then
    $sec = $zeit
    $min = "0"
    $std = "0"
    $day = "0"
    ElseIf $zeit < 60 * 60 Then
    If StringInStr($zeit / 60, ".") == 0 Then
    $sec = "0"
    $min = $zeit / 60
    Else
    $min = $zeit / 60
    If StringInStr($min, ".") > 0 Then $min = StringTrimRight($min, StringLen($min) - StringInStr($min, ".") + 1)
    $sec = $zeit - $min * 60
    If StringInStr($sec, ".") > 0 Then $sec = StringTrimRight($sec, StringLen($sec) - StringInStr($sec, ".") + 1)
    EndIf
    $std = "0"
    $day = "0"
    ElseIf $zeit < 60 * 60 * 24 Then
    If StringInStr($zeit / 60 / 60, ".") == 0 Then
    $sec = "0"
    $min = "0"
    $std = $zeit / 60 / 60
    Else
    $std = $zeit / 60 / 60
    If StringInStr($std, ".") > 0 Then $std = StringTrimRight($std, StringLen($std) - StringInStr($std, ".") + 1)
    $min = $zeit / 60 - $std * 60
    If StringInStr($min, ".") > 0 Then $min = StringTrimRight($min, StringLen($min) - StringInStr($min, ".") + 1)
    $sec = $zeit - $std * 60 * 60 - $min * 60
    If StringInStr($sec, ".") > 0 Then $sec = StringTrimRight($sec, StringLen($sec) - StringInStr($sec, ".") + 1)
    EndIf
    $day = "0"
    Else
    If StringInStr($zeit / 60 / 60 / 24, ".") == 0 Then
    $sec = "0"
    $min = "0"
    $std = "0"
    $day = $zeit / 60 / 60 / 24
    Else
    $day = StringTrimRight($zeit / 60 / 60 / 24, StringLen($zeit / 60 / 60 / 24) - StringInStr($zeit / 60 / 60 / 24, ".") + 1)
    $std = $zeit / 60 / 60 - $day * 24
    If StringInStr($std, ".") > 0 Then $std = StringTrimRight($std, StringLen($std) - StringInStr($std, ".") + 1)
    $min = $zeit / 60 - $std * 60 - $day * 24 * 60
    If StringInStr($min, ".") > 0 Then $min = StringTrimRight($min, StringLen($min) - StringInStr($min, ".") + 1)
    $sec = $zeit - $std * 60 * 60 - $min * 60 - $day * 24 * 60 * 60
    If StringInStr($sec, ".") > 0 Then $sec = StringTrimRight($sec, StringLen($sec) - StringInStr($sec, ".") + 1)
    EndIf
    EndIf
    If $sec < 10 Then $sec = "0" & $sec
    If $min < 10 Then $min = "0" & $min
    If $std < 10 Then $std = "0" & $std
    $ausgabe = $day & "d " & $std & ":" & $min & ":" & $sec
    Return $ausgabe
    $ausgabe = ""
    $zeit = ""
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func SocketToIP($SHOCKET)
    $sockaddr = DllStructCreate("short;ushort;uint;char[8]")
    $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
    Return $aRet
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _ProcessListProperties($Process = "", $sComputer = ".")
    Local $sUserName, $sMsg, $sUserDomain, $avProcs, $dtmDate
    Local $avProcs[1][2] = [[0, ""]], $n = 1
    ; Convert PID if passed as string
    If StringIsInt($Process) Then $Process = Int($Process)
    ; Connect to WMI and get process objects
    $oWMI = ObjGet("winmgmts:{impersonationLevel=impersonate,authenticationLevel=pktPrivacy, (Debug)}!" & $sComputer & "\root\cimv2")
    If IsObj($oWMI) Then
    ; Get collection processes from Win32_Process
    If $Process == "" Then
    ; Get all
    $colProcs = $oWMI.ExecQuery("select * from win32_process")
    ElseIf IsInt($Process) Then
    ; Get by PID
    $colProcs = $oWMI.ExecQuery("select * from win32_process where ProcessId = " & $Process)
    Else
    ; Get by Name
    $colProcs = $oWMI.ExecQuery("select * from win32_process where Name = '" & $Process & "'")
    EndIf
    If IsObj($colProcs) Then
    ; Return for no matches
    If $colProcs.count = 0 Then Return $avProcs
    ; Size the array
    ReDim $avProcs[$colProcs.count + 1][10]
    $avProcs[0][0] = UBound($avProcs) - 1
    ; For each process...
    For $oProc In $colProcs
    ; [n][0] = Process name
    $avProcs[$n][0] = $oProc.name
    ; [n][1] = Process PID
    $avProcs[$n][1] = $oProc.ProcessId
    ; [n][2] = Parent PID
    $avProcs[$n][2] = $oProc.ParentProcessId
    ; [n][3] = Owner
    If $oProc.GetOwner($sUserName, $sUserDomain) = 0 Then $avProcs[$n][3] = $sUserDomain & "" & $sUserName
    ; [n][4] = Priority
    $avProcs[$n][4] = $oProc.Priority
    ; [n][5] = Executable path
    $avProcs[$n][5] = $oProc.ExecutablePath
    ; [n][8] = Creation date/time
    $dtmDate = $oProc.CreationDate
    If $dtmDate <> "" Then
    ; Back referencing RegExp pattern from weaponx
    Local $sRegExpPatt = "\A(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(?:.*)"
    $dtmDate = StringRegExpReplace($dtmDate, $sRegExpPatt, "$2/$3/$1 $4:$5:$6")
    EndIf
    $avProcs[$n][8] = $dtmDate
    ; [n][9] = Command line string
    $avProcs[$n][9] = $oProc.CommandLine
    ; increment index
    $n += 1
    Next
    Else
    SetError(2); Error getting process collection from WMI
    EndIf
    ; release the collection object
    $colProcs = 0
    ; Get collection of all processes from Win32_PerfFormattedData_PerfProc_Process
    ; Have to use an SWbemRefresher to pull the collection, or all Perf data will be zeros
    Local $oRefresher = ObjCreate("WbemScripting.SWbemRefresher")
    $colProcs = $oRefresher.AddEnum($oWMI, "Win32_PerfFormattedData_PerfProc_Process").objectSet
    $oRefresher.Refresh
    ; Time delay before calling refresher
    Local $iTime = TimerInit()
    Do
    Sleep(20)
    Until TimerDiff($iTime) >= 100
    $oRefresher.Refresh
    ; Get PerfProc data
    For $oProc In $colProcs
    ; Find it in the array
    For $n = 1 To $avProcs[0][0]
    If $avProcs[$n][1] = $oProc.IDProcess Then
    ; [n][6] = CPU usage
    $avProcs[$n][6] = $oProc.PercentProcessorTime
    ; [n][7] = memory usage
    $avProcs[$n][7] = $oProc.WorkingSet
    ExitLoop
    EndIf
    Next
    Next
    Else
    SetError(1); Error connecting to WMI
    EndIf
    ; Return array
    Return $avProcs
    EndFunc

    [/autoit]

    Ich habe bereits große Strings nach der Verarbeitung entleer ($string = ""), hat aber nicht viel gebracht...

    Hat jemand eine Lösung für das Problem?


    Mit freundlichen Grüßen

    Krassus

  • TCPRecv gibt Hexadezimalzahlen zurück

    • Krassus1547
    • 23. Dezember 2013 um 17:34

    Ich habe grade auf die aktuellste Version von AutoIT geupdated (3.3.10.0). Der Fehler ist jedoch nicht weggeganden.

    Edit: O.K. Ich hab den Fehler gefunden! $ramarr ist eine Kommazahl (209.234). Wenn ich jetzt mit StringTrimRight(...) das Komma und die dahinter folgenden Zahlen abtrenne, kommt der String richtig an. Will ich jetzt aber die komplette Kommazahl senden, verwende ich StringToBinary($ramarr).


    Mit freundlichen Grüßen


    Krassus1547

  • TCPRecv gibt Hexadezimalzahlen zurück

    • Krassus1547
    • 23. Dezember 2013 um 16:16

    Einmal Clientscript (Authentifiakation ist noch nicht vollständig. Verschlüsselung kommt noch)

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #Include <GuiButton.au3>
    #include <GuiTab.au3>
    #include <EditConstants.au3>
    #include <WindowsConstants.au3>
    #include <String.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $player = "0"
    Global $maxplayer = "0"
    Global $maxram = "0"
    Global $useram = "0"
    Global $usecpu = "0"
    Global $serveruptime = "0d 00:00:00"
    Global $autoupvar = 0
    Global $responsetime = 5000

    [/autoit] [autoit][/autoit] [autoit]

    GUICreate("Commodum - Servercontroler",720,480)

    [/autoit] [autoit][/autoit] [autoit]

    $hTab = GUICtrlCreateTab(10, 10, 480, 480)
    GUICtrlCreateTabItem("Login")
    GUICtrlCreateLabel("IP-Adresse:Port",40,82)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $ip = GUICtrlCreateInput("176.57.141.178",120,80,90,18)
    GUICtrlCreateLabel(":",215,82)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $port = GUICtrlCreateInput("1",225,80,30,18,$ES_NUMBER)
    $resptime = GUICtrlCreateInput("Responsetime = 5000ms",270,80,130,18,$ES_NUMBER)
    GUICtrlCreateLabel("Logindaten",40,120)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $username = GUICtrlCreateInput("Tester",120,120,100,18)
    $password = GUICtrlCreateInput("test",230,120,100,18)
    $Login_But = GUICtrlCreateButton("Login",160,160,50)
    $logstat_labl = GUICtrlCreateLabel("Bitte prüfe deine Logindaten!",60,202,350)
    GUICtrlSetColor(-1,0xff0000)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $amp_icon = GUICtrlCreatePic("red.gif",40,200,16,16)
    GUICtrlCreateTabItem("Statistiken")
    GUICtrlCreateLabel("CPU-Auslastung",40,80)
    $cpu_prog = GUICtrlCreateProgress(125,77,200)
    GUICtrlCreateLabel("RAM-Auslastung",40,115)
    $ram_prog = GUICtrlCreateProgress(125,111,200)
    $uram_labl = GUICtrlCreateLabel("0",GetPos4PNum(0),115,200)
    GUICtrlCreateLabel("/",370,115)
    $mram_labl = GUICtrlCreateLabel("0",375,115,200)
    GUICtrlCreateLabel("Online Spieler",40,145)
    $pla_prog = GUICtrlCreateProgress(125,141,200)
    $pla_labl = GUICtrlCreateLabel("0",GetPos4PNum(0),145)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlCreateLabel("/",370,145)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $mpl_labl = GUICtrlCreateLabel("0",375,145,30)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $upt_labl = GUICtrlCreateLabel("Uptime: "&$serveruptime,40,175,200)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $stat_ak_but = GUICtrlCreateButton("Aktualisieren",210,200)
    $check_autoakt = GUICtrlCreateCheckbox("Auto refresh",300,202)
    GUICtrlSetBkColor($check_autoakt, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlCreateTabItem("Server")
    $serv_log = GUICtrlCreateEdit("",40,40,415,420,$ES_READONLY)
    GUICtrlCreateTabItem("Bans und Co.")
    GUICtrlCreateTabItem("Spieler")
    GUICtrlCreateTabItem("Sonstiges")
    GUICtrlCreateTabItem("")

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)
    TCPStartup()
    $socket = -1

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $curtab = _GUICtrlTab_GetCurFocus($hTab)
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Login_But
    If GUICtrlRead($ip) <> "" And GUICtrlRead($ip) <> "IP-Adresse" And GUICtrlRead($port) <> "" And GUICtrlRead($port) <> "Port" And GUICtrlRead($username) <> "" And GUICtrlRead($username) <> "Benutzername" And GUICtrlRead($password) <> "" And GUICtrlRead($password) <> "Password" Then
    $socket = TCPConnect(GUICtrlRead($ip),GUICtrlRead($port))
    If $socket = -1 Then
    GUICtrlSetImage($amp_icon,"yellow.gif")
    GUICtrlSetData($logstat_labl,"Verbindung zum Server konnte nicht hergestellt werden!")
    GUICtrlSetColor($logstat_labl,0xF8CD00)
    Else
    If GUICtrlRead($resptime) <> "Responsetime = 5000ms" Then $responsetime = GUICtrlRead($resptime)
    $sendedBytes = TCPSend($socket,GUICtrlRead($username)&"|;:|"&GUICtrlRead($password))
    If $sendedBytes = 0 Then
    GUICtrlSetImage($amp_icon,"yellow.gif")
    GUICtrlSetData($logstat_labl,"Logindaten konnten nicht an den Server gesendet werden!")
    GUICtrlSetColor($logstat_labl,0xF8CD00)
    Else
    $timer = TimerInit()
    Do
    $recvData = TCPRecv($socket,1024,0)
    Until $recvData <> "" Or TimerDiff($timer) > $responsetime
    If $recvData == "O.K." Then
    GUICtrlSetImage($amp_icon,"green.gif")
    GUICtrlSetData($logstat_labl,"Deine Logindaten wurden akzeptiert!")
    GUICtrlSetColor($logstat_labl,0x00ff00)
    Sleep(2000)
    If LoadServerInfo($socket) == -1 Then
    GUICtrlSetImage($amp_icon,"yellow.gif")
    GUICtrlSetData($logstat_labl,"Die Serverinformationen konnte nicht geladen werden!")
    GUICtrlSetColor($logstat_labl,0xF8CD00)
    EndIf
    Else
    GUICtrlSetImage($amp_icon,"red.gif")
    GUICtrlSetData($logstat_labl,"Deine Logindaten wurden nicht akzeptiert! Server response: "&$recvData)
    GUICtrlSetColor($logstat_labl,0xff0000)
    EndIf
    EndIf
    EndIf
    Else
    GUICtrlSetImage($amp_icon,"yellow.gif")
    GUICtrlSetData($logstat_labl,"Bitte gib deine Logindaten an!")
    GUICtrlSetColor($logstat_labl,0xF8CD00)
    EndIf
    Case $htab
    Switch $curtab
    Case 0
    Case 1
    GUICtrlSetData($cpu_prog,$usecpu)
    GUICtrlSetData($ram_prog,$useram/$maxram*100)
    GUICtrlSetData($pla_prog,$player/$maxplayer*100)
    GUICtrlSetData($mpl_labl,$maxplayer)
    GUICtrlSetData($pla_labl,$player)
    GUICtrlSetData($mram_labl,$maxram)
    GUICtrlSetData($uram_labl,$useram)
    GUICtrlSetPos($uram_labl,GetPos4PNum($useram),115)
    GUICtrlSetPos($pla_labl,GetPos4PNum($player),145)
    GUICtrlSetData($upt_labl,"Uptime: "&$serveruptime)
    EndSwitch
    Case $stat_ak_but
    $resp = Autoupdate()
    If $resp == -1 Then
    GUICtrlSetImage($amp_icon,"yellow.gif")
    GUICtrlSetData($logstat_labl,"Logindaten konnten nicht an den Server gesendet werden!")
    GUICtrlSetColor($logstat_labl,0xF8CD00)
    ElseIf $resp == -2 Then
    GUICtrlSetImage($amp_icon,"yellow.gif")
    GUICtrlSetData($logstat_labl,"Die Serverinformationen konnte nicht geladen werden: Paket konnte nicht gesendet werden!")
    GUICtrlSetColor($logstat_labl,0xF8CD00)
    ElseIf $resp == -3 Then
    GUICtrlSetImage($amp_icon,"red.gif")
    GUICtrlSetData($logstat_labl,"Deine Logindaten wurden nicht akzeptiert!")
    GUICtrlSetColor($logstat_labl,0xff0000)
    ElseIf $resp == -4 Then
    GUICtrlSetImage($amp_icon,"yellow.gif")
    GUICtrlSetData($logstat_labl,"Die Serverinformationen konnte nicht geladen werden: Der Server antwortet nicht!")
    GUICtrlSetColor($logstat_labl,0xF8CD00)
    ElseIf $resp == 0 Then
    Else
    MsgBox(16,"Fehler","Es ist ein unbekannter Fehler aufgetreten! Code: stat_ak_but.autoupdate.err="&$resp,5)
    Exit
    EndIf
    Case $check_autoakt
    If $autoupvar == 0 Then
    AdlibRegister("Autoupdate",5000)
    $autoupvar = 1
    Else
    AdlibUnRegister("Autoupdate")
    $autoupvar = 0
    EndIf
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    TCPCloseSocket($socket)
    TCPShutdown()
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    Func GetPos4PNum($aplayer)
    If $aplayer > 999 Then
    Return 346
    ElseIf $aplayer > 99 Then
    Return 352
    ElseIf $aplayer > 9 Then
    Return 357
    Else
    Return 363
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func GetServerUptime()
    $asocket = TCPConnect(GUICtrlRead($ip),GUICtrlRead($port))
    $asendedBytes = TCPSend($asocket,GUICtrlRead($username)&"|;:|"&GUICtrlRead($password))
    If $asendedBytes = 0 Then
    MsgBox(16, "Error", "Logindaten konnte nicht an "&GUICtrlRead($ip)&":"&GUICtrlRead($port)&" gesendet werden.")
    Return 0
    Else
    $timer = TimerInit()
    Do
    $arecvData = TCPRecv($asocket,1024,0)
    Until $arecvData <> "" Or TimerDiff($timer) > 15000
    If $arecvData == "O.K." Then
    TCPSend($asocket,"uptime")
    Do
    $arecvData = TCPRecv($asocket,1024,0)
    Until $arecvData <> "" Or TimerDiff($timer) > 15000
    Return $arecvData
    Else
    MsgBox(16,"Login",$arecvData)
    Return 0
    EndIf
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func LoadServerInfo($asocket)
    $atimer = TimerInit()
    If TCPSend($asocket,"multiple") == 0 Then Return -1
    Sleep(10)
    If TCPSend($asocket,"useram") == 0 Then Return -1
    Do
    $recvData = TCPRecv($asocket,1024)
    Until $recvData <> "" Or TimerDiff($atimer) > 5000
    If $recvData == "" Then
    Return -2
    Else
    $useram = $recvData
    If StringInStr($useram,".") > 0 Then $useram = StringTrimRight($useram,StringLen($useram)-StringInStr($useram,".")+1)
    EndIf
    If TCPSend($asocket,"list") == 0 Then Return -1
    Do
    $recvData = TCPRecv($asocket,1024,0)
    Until $recvData <> "" Or TimerDiff($atimer) > 5000
    If $recvData == "" Then
    Return -2
    Else
    $maxplayer = StringTrimLeft($recvData,StringInStr($recvData,"/"))
    $player = StringTrimRight($recvData,StringLen($recvData)-StringInStr($recvData,"/"))
    EndIf
    If TCPSend($asocket,"maxram") == 0 Then Return -1
    Do
    $recvData = TCPRecv($asocket,2048,0)
    Until $recvData <> "" Or TimerDiff($atimer) > 5000
    If $recvData == "" Then
    Return -2
    Else
    $maxram = $recvData
    EndIf
    If TCPSend($asocket,"usecpu") == 0 Then Return -1
    Do
    $recvData = TCPRecv($asocket,1024,0)
    Until $recvData <> "" Or TimerDiff($atimer) > 5000
    If $recvData == "" Then
    Return -
    Else
    $usecpu = $recvData
    EndIf
    TrayTip("Stats","MaxRAM: "&$maxram&@CRLF&"UseRAM: "&$useram&@CRLF&"UseCPU: "&$usecpu,5)
    If TCPSend($asocket,"uptime") == 0 Then Return -1
    Do
    $recvData = TCPRecv($asocket,1024,0)
    Until $recvData <> "" Or TimerDiff($atimer) > 5000
    If $recvData == "" Then
    Return -2
    Else
    $serveruptime = $recvData
    EndIf
    If TCPSend($asocket,"multipleend") == 0 Then Return -1
    TCPCloseSocket($asocket)
    Return 0
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Autoupdate()
    For $i = 1 To 1
    $asocket = TCPConnect(GUICtrlRead($ip),GUICtrlRead($port))
    $asendedBytes = TCPSend($asocket,GUICtrlRead($username)&"|;:|"&GUICtrlRead($password))
    If $asendedBytes == 0 Then
    Return -1
    Else
    $atimer = TimerInit()
    Do
    $arecvData = TCPRecv($asocket,1024,0)
    Until $arecvData <> "" Or TimerDiff($atimer) > 15000
    If $arecvData == "O.K." Then
    $ainfo = LoadServerInfo($asocket)
    If $ainfo == -1 Then
    Return -2
    ElseIf $ainfo == -2 Then
    Return -4
    ElseIf $ainfo == 0 Then
    GUICtrlSetData($cpu_prog,$usecpu)
    GUICtrlSetData($ram_prog,$useram/$maxram*100)
    GUICtrlSetData($pla_prog,$player/$maxplayer*100)
    GUICtrlSetData($mpl_labl,$maxplayer)
    GUICtrlSetData($pla_labl,$player)
    GUICtrlSetData($mram_labl,$maxram)
    GUICtrlSetData($uram_labl,$useram)
    GUICtrlSetPos($uram_labl,GetPos4PNum($useram),115)
    GUICtrlSetPos($pla_labl,GetPos4PNum($player),145)
    GUICtrlSetData($upt_labl,"Uptime: "&$serveruptime)
    Else
    Return -10
    EndIf
    Else
    Return -3
    EndIf
    EndIf
    Next
    EndFunc

    [/autoit]

    Und das Serverscript

    Spoiler anzeigen
    [autoit]


    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Outfile_x64=starter.exe
    #AutoIt3Wrapper_Change2CUI=y
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

    [/autoit] [autoit][/autoit] [autoit]

    #include <Constants.au3>
    #include <File.au3>
    #include <array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ;... <Username> <ServerNo> <RAM> <Passwort>

    [/autoit] [autoit][/autoit] [autoit]

    If $CmdLine[0] < 1 Then Exit

    [/autoit] [autoit][/autoit] [autoit]

    $process = Run("java -Dfile.encoding=utf-8 -Djline.terminal=jline.UnsupportedTerminal -server -Xmx"&$CmdLine[3]&"M -jar D:\Minecraft_Server"&$CmdLine[1]&"\Server_"&$CmdLine[2]&"\minecraft_server.jar nogui -nojline", "D:\Minecraft_Server"&$CmdLine[1]&"\Server_"&$CmdLine[2]&"",@SW_HIDE,$STDIN_CHILD + $STDOUT_CHILD)
    $ticker = TimerInit()

    [/autoit] [autoit][/autoit] [autoit]

    If $process Then
    WinSetTitle("starter.exe","",$process)
    Else
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Global $oMyError = ObjEvent("AutoIt.Error","MyErrFunc"), $f_COMError = False

    [/autoit] [autoit][/autoit] [autoit]

    TCPStartup()
    $asocket = TCPListen("176.57.141.178",1)
    $try = 0
    While 1
    Do
    $acceptedSocket = TCPAccept($asocket)
    Until $acceptedSocket <> -1
    Do
    $receivedData = TCPRecv($acceptedSocket,1024,0)
    Until $receivedData <> ""
    $authstring = $CmdLine[1]&"|;:|"&$CmdLine[4]
    If $receivedData == $authstring And $try < 4 Then
    TCPSend($acceptedSocket,"O.K.")
    Do
    $receivedData = TCPRecv($acceptedSocket,1024,0)
    Until $receivedData <> ""
    ConsoleWrite("["&@HOUR&":"&@MIN&":"&@SEC&"]: Incoming Command: |"&$receivedData&"| from "&SocketToIP($acceptedSocket)&@CRLF)
    If $receivedData == "multiple" Then
    $waittimer = TimerInit()
    Do
    $receivedData = TCPRecv($acceptedSocket,1024,0)
    If $receivedData == "list" Then
    TCPSend($acceptedSocket,GetOnlinePlayer())
    ElseIf $receivedData == "maxram" Then
    TCPSend($acceptedSocket,$CmdLine[3])
    ElseIf $receivedData == "useram" Then
    $ramarr = ProcessGetStats($process)
    $ramarr = $ramarr[0]/1024/1024
    TCPSend($acceptedSocket,$ramarr)
    ElseIf $receivedData == "usecpu" Then
    $cpuarr = _ProcessListProperties($process)
    TCPSend($acceptedSocket,$cpuarr[1][6])
    ElseIf $receivedData == "uptime" Then
    TCPSend($acceptedSocket,GetServerUptime())
    EndIf
    Until $receivedData == "multipleend" Or TimerDiff($waittimer) > 60000
    If TimerDiff($waittimer) > 60000 Then ConsoleWrite("["&@HOUR&":"&@MIN&":"&@SEC&"]: Lost connection to "&SocketToIP($acceptedSocket)&@CRLF)
    Else
    If $receivedData == "list" Then
    TCPSend($acceptedSocket,GetOnlinePlayer())
    ElseIf $receivedData == "uptime" Then
    TCPSend($acceptedSocket,GetServerUptime())
    Else
    StdinWrite($process,$receivedData&@CRLF)
    EndIf
    EndIf
    TCPCloseSocket($acceptedSocket)
    $try = 0
    Else
    ConsoleWrite("["&@HOUR&":"&@MIN&":"&@SEC&"]: Authentication failed from "&SocketToIP($acceptedSocket)&@CRLF)
    TCPSend($acceptedSocket,"Wrong password or username!")
    TCPCloseSocket($acceptedSocket)
    $try = $try + 1
    If $try > 3 Then
    ConsoleWrite("["&@HOUR&":"&@MIN&":"&@SEC&"]: Too many failed authentications! Sleeping 2 min."&@CRLF)
    TCPCloseSocket($asocket)
    Sleep(120000)
    $try = 0
    $asocket = TCPListen("176.57.141.178",1)
    ConsoleWrite("["&@HOUR&":"&@MIN&":"&@SEC&"]: Listening..."&@CRLF)
    EndIf
    EndIf
    WEnd
    TCPShutdown()
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    Func GetOnlinePlayer()
    StdinWrite($process,"list"&@CRLF)
    $logfile = FileOpen("D:\Minecraft_Server"&$CmdLine[1]&"\Server_"&$CmdLine[2]&"\server.log",0)
    If $logfile == -1 Then
    FileClose($logfile)
    Return "0/0"
    Else
    $atime = TimerInit()
    Do
    $text = FileReadLine($logfile,_FileCountLines("D:\Minecraft_Server"&$CmdLine[1]&"\Server_"&$CmdLine[2]&"\server.log")-1)
    Until StringInStr($text,"There are ") <> 0 Or StringInStr($text,"Es sind ") <> 0 Or TimerDiff($atime) > 10000
    If StringInStr($text,"/INFO") == 0 Then
    $pos = StringInStr($text,"/")
    Else
    $pos = StringInStr($text,"/",0,2)
    EndIf
    $pos1 = StringInStr($text," ",0,5)
    $pos2 = StringInStr($text," ",0,6)
    $player = StringTrimRight($text,StringLen($text)-$pos2)
    $player = StringTrimLeft($player,$pos1)
    FileClose($logfile)
    $test = ""
    Return $player
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func GetServerUptime()
    $zeit = TimerDiff($ticker)/1000
    If StringInStr($zeit,".") > 0 Then $zeit = StringTrimRight($zeit,StringLen($zeit)-StringInStr($zeit,".")+1)
    If $zeit < 60 Then
    $sec = $zeit
    $min = "0"
    $std = "0"
    $day = "0"
    ElseIf $zeit < 60*60 Then
    If StringInStr($zeit/60,".") == 0 Then
    $sec = "0"
    $min = $zeit/60
    Else
    $min = $zeit/60
    If StringInStr($min,".") > 0 Then $min = StringTrimRight($min,StringLen($min)-StringInStr($min,".")+1)
    $sec = $zeit - $min*60
    If StringInStr($sec,".") > 0 Then $sec = StringTrimRight($sec,StringLen($sec)-StringInStr($sec,".")+1)
    EndIf
    $std = "0"
    $day = "0"
    ElseIf $zeit < 60*60*24 Then
    If StringInStr($zeit/60/60,".") == 0 Then
    $sec = "0"
    $min = "0"
    $std = $zeit/60/60
    Else
    $std = $zeit/60/60
    If StringInStr($std,".") > 0 Then $std = StringTrimRight($std,StringLen($std)-StringInStr($std,".")+1)
    $min = $zeit/60 - $std*60
    If StringInStr($min,".") > 0 Then $min = StringTrimRight($min,StringLen($min)-StringInStr($min,".")+1)
    $sec = $zeit - $std*60*60 - $min*60
    If StringInStr($sec,".") > 0 Then $sec = StringTrimRight($sec,StringLen($sec)-StringInStr($sec,".")+1)
    EndIf
    $day = "0"
    Else
    If StringInStr($zeit/60/60/24,".") == 0 Then
    $sec = "0"
    $min = "0"
    $std = "0"
    $day = $zeit/60/60/24
    Else
    $day = StringTrimRight($zeit/60/60/24,StringLen($zeit/60/60/24)-StringInStr($zeit/60/60/24,".")+1)
    $std = $zeit/60/60 - $day*24
    If StringInStr($std,".") > 0 Then $std = StringTrimRight($std,StringLen($std)-StringInStr($std,".")+1)
    $min = $zeit/60 - $std*60 - $day*24*60
    If StringInStr($min,".") > 0 Then $min = StringTrimRight($min,StringLen($min)-StringInStr($min,".")+1)
    $sec = $zeit - $std*60*60 - $min*60 - $day*24*60*60
    If StringInStr($sec,".") > 0 Then $sec = StringTrimRight($sec,StringLen($sec)-StringInStr($sec,".")+1)
    EndIf
    EndIf
    If $sec < 10 Then $sec = "0"&$sec
    If $min < 10 Then $min = "0"&$min
    If $std < 10 Then $std = "0"&$std
    $ausgabe = $day&"d "&$std&":"&$min&":"&$sec
    Return $ausgabe
    $ausgabe = ""
    $zeit = ""
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func SocketToIP($SHOCKET)
    $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

    [/autoit] [autoit][/autoit] [autoit]

    $sockaddr = 0
    Return $aRet
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _ProcessListProperties($Process = "", $sComputer = ".")
    Local $sUserName, $sMsg, $sUserDomain, $avProcs, $dtmDate
    Local $avProcs[1][2] = [[0, ""]], $n = 1

    [/autoit] [autoit][/autoit] [autoit]

    ; Convert PID if passed as string
    If StringIsInt($Process) Then $Process = Int($Process)

    [/autoit] [autoit][/autoit] [autoit]

    ; Connect to WMI and get process objects
    $oWMI = ObjGet("winmgmts:{impersonationLevel=impersonate,authenticationLevel=pktPrivacy, (Debug)}!" & $sComputer & "\root\cimv2")
    If IsObj($oWMI) Then
    ; Get collection processes from Win32_Process
    If $Process == "" Then
    ; Get all
    $colProcs = $oWMI.ExecQuery("select * from win32_process")
    ElseIf IsInt($Process) Then
    ; Get by PID
    $colProcs = $oWMI.ExecQuery("select * from win32_process where ProcessId = " & $Process)
    Else
    ; Get by Name
    $colProcs = $oWMI.ExecQuery("select * from win32_process where Name = '" & $Process & "'")
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If IsObj($colProcs) Then
    ; Return for no matches
    If $colProcs.count = 0 Then Return $avProcs

    [/autoit] [autoit][/autoit] [autoit]

    ; Size the array
    ReDim $avProcs[$colProcs.count + 1][10]
    $avProcs[0][0] = UBound($avProcs) - 1

    [/autoit] [autoit][/autoit] [autoit]

    ; For each process...
    For $oProc In $colProcs
    ; [n][0] = Process name
    $avProcs[$n][0] = $oProc.name
    ; [n][1] = Process PID
    $avProcs[$n][1] = $oProc.ProcessId
    ; [n][2] = Parent PID
    $avProcs[$n][2] = $oProc.ParentProcessId
    ; [n][3] = Owner
    If $oProc.GetOwner($sUserName, $sUserDomain) = 0 Then $avProcs[$n][3] = $sUserDomain & "" & $sUserName
    ; [n][4] = Priority
    $avProcs[$n][4] = $oProc.Priority
    ; [n][5] = Executable path
    $avProcs[$n][5] = $oProc.ExecutablePath
    ; [n][8] = Creation date/time
    $dtmDate = $oProc.CreationDate
    If $dtmDate <> "" Then
    ; Back referencing RegExp pattern from weaponx
    Local $sRegExpPatt = "\A(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(?:.*)"
    $dtmDate = StringRegExpReplace($dtmDate, $sRegExpPatt, "$2/$3/$1 $4:$5:$6")
    EndIf
    $avProcs[$n][8] = $dtmDate
    ; [n][9] = Command line string
    $avProcs[$n][9] = $oProc.CommandLine

    [/autoit] [autoit][/autoit] [autoit]

    ; increment index
    $n += 1
    Next
    Else
    SetError(2); Error getting process collection from WMI
    EndIf
    ; release the collection object
    $colProcs = 0

    [/autoit] [autoit][/autoit] [autoit]

    ; Get collection of all processes from Win32_PerfFormattedData_PerfProc_Process
    ; Have to use an SWbemRefresher to pull the collection, or all Perf data will be zeros
    Local $oRefresher = ObjCreate("WbemScripting.SWbemRefresher")
    $colProcs = $oRefresher.AddEnum($oWMI, "Win32_PerfFormattedData_PerfProc_Process" ).objectSet
    $oRefresher.Refresh

    [/autoit] [autoit][/autoit] [autoit]

    ; Time delay before calling refresher
    Local $iTime = TimerInit()
    Do
    Sleep(20)
    Until TimerDiff($iTime) >= 100
    $oRefresher.Refresh

    [/autoit] [autoit][/autoit] [autoit]

    ; Get PerfProc data
    For $oProc In $colProcs
    ; Find it in the array
    For $n = 1 To $avProcs[0][0]
    If $avProcs[$n][1] = $oProc.IDProcess Then
    ; [n][6] = CPU usage
    $avProcs[$n][6] = $oProc.PercentProcessorTime
    ; [n][7] = memory usage
    $avProcs[$n][7] = $oProc.WorkingSet
    ExitLoop
    EndIf
    Next
    Next
    Else
    SetError(1); Error connecting to WMI
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ; Return array
    $oProc = ""
    $colProcs = ""
    $sUserName = ""
    $sMsg = ""
    $sUserDomain = ""
    $dtmDate = ""
    $n = ""
    $Process = ""
    $sComputer = ""
    $oWMI = ""
    Return $avProcs
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func MyErrFunc()
    Local $HexNumber=hex($oMyError.number,8)
    Msgbox(0,"","We intercepted a COM Error !" & @CRLF & _
    "Number is: " & $HexNumber & @CRLF & _
    "WinDescription is: " & $oMyError.windescription & @CRLF & _
    "Source is: " & $oMyError.source & @CRLF & _
    "ScriptLine is: " & $oMyError.scriptline)
    $f_COMError = True; something to check for when this function returns
    Endfunc

    [/autoit]

    Du kannst es gerne compelieren und ausprobieren. Mein Server läuft und die Daten, die in den Inputs drin stehen sind korrekt. Der Server setzt die Verbindung nach 1 min zurück, wenn keine Antwort vom Client kommt.

    Mit freundlichen Grüßen

    Krassus


    P.S.
    Bin in ca. 1 Std wieder da. (Weihnachten und so ^^)

  • TCPRecv gibt Hexadezimalzahlen zurück

    • Krassus1547
    • 23. Dezember 2013 um 16:06

    Diese Problem tritt nur bei diesen Scriptzeilen auf. Andere TCPRecv geben den richtigen bzw. gesendeten Wert aus (z.B. $maxram). Ich hab die Variablennamen geändert, den Anfangswert geändert und die Position im GUI verändert, aber immer kommt eine Hexadezimalzahl raus...
    Wenn ich _HexToString($useram) anwende, kommt ein leerer String zurück. Das Gleiche bei Dec($useram)


    Mit freundlichen Grüßen


    Krassus

  • TCPRecv gibt Hexadezimalzahlen zurück

    • Krassus1547
    • 23. Dezember 2013 um 15:35

    Hi,

    Ja. Ich hab 3 Varianten ausprobiert:
    3.Parameter = 0
    3.Parameter = 1
    3.Paramater nicht gesetzt, also default = 0

    hat nichts geändert


    Mit freundlichen Grüßen


    Krassus

  • TCPRecv gibt Hexadezimalzahlen zurück

    • Krassus1547
    • 23. Dezember 2013 um 14:22

    Guten Tag,

    ich habe seit einigen Tagen das Problem, dass folgende Scriptzeilen eine Hexadezimalzahl zurückgeben und keine normale Zahl:

    [autoit]


    If TCPSend($asocket,"useram") == 0 Then Return -1
    Do
    $recvData = TCPRecv($asocket,1024,1)
    Until $recvData <> "" Or TimerDiff($atimer) > 5000
    If $recvData == "" Then
    Return -2
    Else
    $useram = $recvData
    If StringInStr($useram,".") > 0 Then $useram = StringTrimRight($useram,StringLen($useram)-StringInStr($useram,".")+1)
    EndIf

    [/autoit]

    Das komische ist jetzt nur, dass TCPRecv nur hier eine Hexadezimalzahl zurückgibt und anderswo nicht. Gut dachte ich micht, liegt dann am Server, aber dort wird keine Hexadezimalzahl abgeschickt?!

    Servercode:

    [autoit]


    $ramarr = ProcessGetStats($process)
    $ramarr = $ramarr[0]/1024/1024
    TCPSend($acceptedSocket,$ramarr)

    [/autoit]


    Wenn ich $ramarr ausgeben lasse, kommt dort zB. 255.2345 raus. Und auch z.B. bei

    [autoit]


    If TCPSend($asocket,"maxram") == 0 Then Return -1
    Do
    $recvData = TCPRecv($asocket,2048,0)
    Until $recvData <> "" Or TimerDiff($atimer) > 5000
    If $recvData == "" Then
    Return -2
    Else
    $maxram = $recvData
    EndIf

    [/autoit]

    kommt eine normale Zahl raus...

    Kennt einer von euch das Problem bzw. eine Lösung? Oder hab ich einen Fehler übersehen?


    Mit freundlichen Grüßen

    Krassus

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™