J'ai un problème : j'aurais voulu créer un programme qui permet de gérer mon serveur Craftbukkit (minecraft). J'ai donc un serveur en mode console qui lance au démarrage java avec en argument le nom du fichier jar (craftbukkit.jar). Les retours de ce fichier lu par java vont bien dans la console ouverte par mon programme, mais je ne sais pas comment les récupérer. De plus, je ne sais pas comment faire pour écrire dans cette console ou envoyer des commandes au fichier jar (ouvert par java dans ma console ouverte par mon programme
Est-ce que quelqu'un aurait une idée ?
► Afficher le texteCode du serveur
Code : Tout sélectionner
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Version=beta
#AutoIt3Wrapper_outfile=C:\Users\Schwey\Documents\Serveur\Serveur\Serveur.exe
#AutoIt3Wrapper_UseX64=n
#AutoIt3Wrapper_Change2CUI=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <Constants.au3>
TCPStartup()
$data = ""
Opt("WinTitleMatchMode", 3)
$id_process = Run('java -Xmx1024M -Xms1024M -jar "craftbukkit-0.0.1-snapshot.jar"')
$handle = WinGetHandle("C:\Users\Schwey\Documents\Serveur\Serveur\Serveur.exe")
SendKeepActive($handle)
$socket = TCPListen("5.43.102.22", 3522)
If $socket == "-1" Then
Exit
EndIf
While 1
$connected = TCPAccept($socket)
If $connected >= "0" Then
While 1
$receive = TCPRecv($connected, 5000)
If @error Then ExitLoop
If StringInStr($receive, "login:") <> "0" Then
If $receive == "login: admin 0000" Then
TCPSend($connected, "Accepted.")
While 1
$receive = TCPRecv($connected, 5000)
If @error Then ExitLoop 2
If StringLeft($receive, StringInStr($receive, ":") - 1) == "logout" Then
TCPSend($connected, "Logout.")
ExitLoop 2
ElseIf StringLeft($receive, StringInStr($receive, ":") - 1) == "exit" Then
Exit
ElseIf StringLeft($receive, StringInStr($receive, ":") - 1) == "run" Then
$id_process = Run('java -Xmx1024M -Xms1024M -jar "craftbukkit-0.0.1-snapshot.jar"')
ElseIf StringLeft($receive, StringInStr($receive, ":") - 1) == "hibernate" Then
Shutdown(64)
ElseIf StringLeft($receive, StringInStr($receive, ":") - 1) == "help" Then
TCPSend($connected, "login: logout: exit: run: hibernate:")
ElseIf $receive <> "" Then
WinActivate($handle)
ConsoleWrite($receive)
ConsoleWrite("")
EndIf
$read = StdoutRead($id_process)
If $read <> "" Then
$data &= $read
EndIf
If $read == @CR Or $read == @LF Or $read == @CRLF Then
TCPSend($connected, $data)
EndIf
WEnd
Else
TCPSend($connected, "Refused.")
EndIf
EndIf
WEnd
EndIf
WEnd
TCPShutdown()► Afficher le texteCode du client
Code : Tout sélectionner
#region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Outfile=G:\Documents and Settings\Propriétaire\Bureau\Serveur Minecraft.exe
#endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
Opt("GUICloseOnESC", 0)
TCPStartup()
HotKeySet("{UP}", "_previous_send")
Global $i = 0
Dim $previous_send[1000] = [""]
$text = @MDAY & "/" & @MON & "/" & @YEAR & " " & @HOUR & ":" & @MIN & "," & @SEC & " >" & "Running." & @CRLF
$gui = GUICreate("Server gestion", 500, 240)
$edit = GUICtrlCreateEdit($text, 5, 5, 490, 190, BitOR($WS_VSCROLL, $ES_READONLY))
GUICtrlSetFont(-1, 10, 400, -1, "MS Sans Serif")
GUICtrlSetBkColor(-1, 0x000000)
GUICtrlSetColor(-1, 0xFFFFFF)
$input = GUICtrlCreateInput("", 5, 200, 385, 30)
GUICtrlSetFont(-1, 10, 400, -1, "MS Sans Serif")
GUICtrlSetBkColor(-1, 0x000000)
GUICtrlSetColor(-1, 0xFFFFFF)
$bouton = GUICtrlCreateButton("Send", 395, 200, 100, 30)
Dim $acceltabs[1][2] = [["{ENTER}", $bouton]]
GUISetAccelerators($acceltabs, $gui)
GUISetState(@SW_SHOW)
$connected = TCPConnect("5.43.102.22", 3522)
If @error Then
$text &= @MDAY & "/" & @MON & "/" & @YEAR & " " & @HOUR & ":" & @MIN & "," & @SEC & " >" & "Can't connect the server." & @CRLF
GUICtrlSetData($edit, $text)
GUICtrlSetState($bouton, $GUI_DISABLE)
GUICtrlSetState($input, $GUI_DISABLE)
Else
$text &= @MDAY & "/" & @MON & "/" & @YEAR & " " & @HOUR & ":" & @MIN & "," & @SEC & " >" & "Connected." & @CRLF
GUICtrlSetData($edit, $text)
EndIf
While 1
$msg = GUIGetMsg()
Switch $msg
Case "-3"
TCPSend($connected, "logout:")
ExitLoop
Case $bouton
$data = GUICtrlRead($input)
GUICtrlSetData($input, "")
If $i < "0" Or $i == "1000" Then
$i = 0
EndIf
$previous_send[$i] = $data
$i += 1
TCPSend($connected, $data)
If @error Then
$text &= @MDAY & "/" & @MON & "/" & @YEAR & " " & @HOUR & ":" & @MIN & "," & @SEC & " >" & "Lost connection" & @CRLF
GUICtrlSetData($edit, $text)
ExitLoop
EndIf
$depart = TimerInit()
While 1
If TimerDiff($depart) >= "5000" Then
$text &= @MDAY & "/" & @MON & "/" & @YEAR & " " & @HOUR & ":" & @MIN & "," & @SEC & " >" & "Lost connection" & @CRLF
GUICtrlSetData($edit, $text)
ExitLoop
EndIf
$receive = TCPRecv($connected, 5000)
If @error Then
$text &= @MDAY & "/" & @MON & "/" & @YEAR & " " & @HOUR & ":" & @MIN & "," & @SEC & " >" & "Lost connection" & @CRLF
GUICtrlSetData($edit, $text)
ExitLoop
ElseIf $receive <> "" Then
If IsNumber(StringLeft($receive, 2)) Then
$text &= $receive & @CRLF
Else
$text &= @MDAY & "/" & @MON & "/" & @YEAR & " " & @HOUR & ":" & @MIN & "," & @SEC & " >" & $receive & @CRLF
EndIf
GUICtrlSetData($edit, $text)
ExitLoop
EndIf
WEnd
EndSwitch
$receive = TCPRecv($connected, 5000)
If $receive <> "" Then
If IsNumber(StringLeft($receive, 2)) Then
$text &= $receive & @CRLF
Else
$text &= @MDAY & "/" & @MON & "/" & @YEAR & " " & @HOUR & ":" & @MIN & "," & @SEC & " >" & $receive & @CRLF
EndIf
GUICtrlSetData($edit, $text)
EndIf
WEnd
TCPShutdown()
Exit
Func _previous_send()
If $i > "0" Then
$i -= 1
GUICtrlSetData($input, $previous_send[$i])
EndIf
EndFunc ;==>_previous_send



