Launcher für mein Spiel

Messoras

Aktives Mitglied
Hallo,
Ich bin's mal wieder und ich sitze nach wie vor noch an meinem Spiel :)
Da es für die Spieler relativ nervig ist, das Spiel nach jeder Überarbeitung neu runterladen zu müssen, dachte ich mir ich könnte es ja mal mit einem Launcher probieren.
Der Launcher soll im Grunde zwei Sachen können:
Die entsprechenden Spieldateien von einer bestimmten Internetseite herunterladen, diese irgendwo speichern und eine bestimmte von den Dateien aufrufen.
Und da seid ihr gefragt :D
Ich kenne mich nämlich garnicht mit Netzwerkprogrammierung aus.
Bis jetzt habe ich es geschafft ein Programm zu implementieren, das zwei Knöpfe und ein kleines Textfeld mit Infos hat (die dann auch von der Website kommen sollten).
Der Spielen-Knopf macht noch garnichts und der Patchen-Knopf hat bis jetzt nur eine URL und einen OutputStream definiert.
Wie schaffe ich es jetzt aus der download-URL die entsprechende Datei zu bekommen?

Gruß Messoras
 
Zuletzt bearbeitet:

Androbin

Bekanntes Mitglied
[Java] Datei downloaden?
Java:
package downloader; 


import java.io.File; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.OutputStream; 
import java.net.HttpURLConnection; 
import java.net.MalformedURLException; 
import java.net.ProtocolException; 
import java.net.URL; 


public class Downloader { 
        public static void downloadFile(String url_str, OutputStream os) 
            throws IllegalStateException, MalformedURLException, 
            ProtocolException, IOException { 


        URL url = new URL(url_str.replace(" ", "%20")); 


        HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 


        conn.setRequestMethod("GET"); 


        conn.connect(); 


        int responseCode = conn.getResponseCode(); 


        if (responseCode == HttpURLConnection.HTTP_OK) { 


            byte tmp_buffer[] = new byte[4096]; 


            InputStream is = conn.getInputStream(); 


            int n; 


            while ((n = is.read(tmp_buffer)) > 0) { 
                os.write(tmp_buffer, 0, n); 
                os.flush(); 
            } 


        } else { 
            throw new IllegalStateException("HTTP response: " + responseCode); 
        } 
    } 


    public static void main(String[] args) { 
        try { 
            final String url = "http://www.unixboard.de/vb3/images/element/misc/logo_blue.gif"; 


            FileOutputStream fos = new FileOutputStream(System 
                    .getProperty("user.home") 
                    + File.separator + "logo.gif"); 


            downloadFile(url, fos); 


            fos.close(); 
        } catch (Exception e) { 


            e.printStackTrace(); 
        } 
    } 
}
 

Messoras

Aktives Mitglied
Hey Androbin,
Ich habe mal deine Methode ausprobiert.
Klappt super! Jetzt habe ich nurnoch das komische "MALFORMED" Problem :D
Ich habe das ganze mal so implementiert:
Java:
try {
            final String witzignet = "http://witzigfahren.jimdo.com/app/download/9884796894/Witzigfahren%20(3.1.1).zip?t=1423413097";
            FileOutputStream fos = new FileOutputStream("data/");

            downloadFile(witzignet, fos);
 
            fos.close();
        } catch (Exception ex) {

            ex.printStackTrace();
        }
Jetzt bekomme ich "data" als .zip Datei raus und dadrin ist alles, wie es sich gehört, ich kann es entpacken und habe dann das, was ich haben wollte :)
Ich habe mal noch die Entpackungsmethode von tutorials.net reingehauen, dabei bekomme ich zwar fast alles so raus, wie ich es will, aber ich bekomme so eine merkwürdige Fehlermeldung: "java.lang.IllegalArgumentException: MALFORMED"
bei dem Code
Java:
ZipEntry entry = (ZipEntry) entries.nextElement();
in der while-Schleife
und sowohl ein paar Bilder (pgns), als auch die .jar Datei fehlen in der entpackten Datei.
Schonmal vielen Dank für den Teil

Dann fehlt mir nurnoch das aufrufen einer .jar Datei in dem, was ich heruntergeladen habe.

Gruß Messoras
 
Zuletzt bearbeitet:

Androbin

Bekanntes Mitglied
"malformed" ist Englisch für "deformiert", "missgebildet" oder auch "missgestaltet".
Damit sind die Fehler in der ZIP-Datei gemeint, da sind offensichtlich Fehler bei passiert.

Die JAR-Datei kannst du dann wie jede andere aufrufen, sofern bereits eine existiert, wenn du kompilierst.
Was du dann im Nachhinein an der JAR-Datei änderst ist Java egal, Hauptsache, es hat sie beim kompilieren gesehen.
 

VfL_Freak

Top Contributor
Moin,
Ich habe das ganze mal so implementiert:
Java:
"java.lang.IllegalArgumentException: MALFORMED"
bei dem Code
[code=Java]ZipEntry entry = (ZipEntry) entries.nextElement();
in der while-Schleife
Ich hatte neulich auch so ein Problem!
Im vermute ganz stark, dass es im ZIP-File Dateinamen mit Umlauten gibt!
Das war es bei mir - damit kommt der Zipper nicht klar !!

Gruß Klaus
 

Messoras

Aktives Mitglied
Tatsache, es lag daran, dass ich eins der Bilder "Kästen" statt "Kaesten" genannt habe :)
Geändert und schon klappt's.
Danke soweit.

Jetzt alles, was mir noch fehlt:
Der Launcher sollte nicht bei jedem Start die Dateien neu herunterladen, also müsste irgendwie auf einfachem Wege ein schneller Versionsabgleich erfolgen...
Dafür könnte ich vermutlich einen zweiten kleinen Download hinzufügen, der nur die Versionsnummer beinhaltet, aber das geht sicherlich auch einfacher.
Das andere wäre die Sache mit dem Aufrufen der .jar.
Geplant ist, dass so ähnlich wie bei Minecraft z.B. ein Klick auf den Patch Button entweder sagt, dass die Version aktuell ist, oder sie neu runterlädt und ein Klick auf den Spielen Button die .jar mit dem Spiel öffnet... Wie rufe ich aus einem JFrame denn jetzt diese .jar auf? :D

Gruß Messoras
 

Messoras

Aktives Mitglied
Soo, jetzt habe ich es soweit :)
die actionPerformed für den SPielen Knopf sieht jetzt so aus:
Java:
try {
                        ProcessBuilder pb = new ProcessBuilder("java","-jar","data/Witzigfahren_"+version+"/Witzigfahren spielen.jar");
                        pb.start();
                    } catch (Exception ex) {

                        ex.printStackTrace();
                    }
Dafür musste ich die Dateien zwar erst noch ein wenig herumschieben, aber jetzt klappt es :D
Danke für die schnelle Hilfe Leute!

Gruß Messoras
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
FrankenDerStein HTTP Https Server Bibliothek für Linux und Android gesucht. Netzwerkprogrammierung 7
FrankenDerStein Socket UDP Multithreading für ein Port Netzwerkprogrammierung 2
M Server-Client-System für Browsergame Netzwerkprogrammierung 5
Tobero Java serversocket nicht nur zuganglich für localhost Netzwerkprogrammierung 6
T Brauche Hilfe beim GET-String für HttpURLConnection Netzwerkprogrammierung 4
F Server für Java Applikationen Netzwerkprogrammierung 16
B Webview für Anwendung Netzwerkprogrammierung 7
M Sicheres Login-System für App implementieren Netzwerkprogrammierung 6
J Netty umsetzung für ein Protokoll Netzwerkprogrammierung 1
J ERM für kleine Verwaltungsdatenbank Netzwerkprogrammierung 2
H Machbarkeitsfrage: TCP/IP Client (z.B. Netty) für Java Web Applcation Netzwerkprogrammierung 1
F Einfaches Gateway für Log-Files Netzwerkprogrammierung 1
P RMI - Neue eigene Instanz für jeden Aufruf auf nicht serialisierbares Objekt - wie? Netzwerkprogrammierung 0
P PPTP Protokoll für JAVA Netzwerkprogrammierung 14
T FTP Wie Notwendigkeit für "rekey" klientenseitig detektieren? Netzwerkprogrammierung 3
S Webserver für Jar File Netzwerkprogrammierung 4
G Socket Socket verbindung für Chat System Netzwerkprogrammierung 3
V Templates für Java Client rabbitmq Netzwerkprogrammierung 4
M Erreichbar für alle zu sein Netzwerkprogrammierung 9
M Server nur für eine Aufgabe Netzwerkprogrammierung 2
N Selbes URL Objekt für alle Requests nutzen Netzwerkprogrammierung 7
T uberspace.de als (v)root-Ersatz für kleinere Java-Anwendungen? Netzwerkprogrammierung 12
L Proxy für Dateidownload? Netzwerkprogrammierung 3
K HTTP Eigener Http Response für Datei-Download Netzwerkprogrammierung 4
D Socket Leitstelle für Funkspiel Netzwerkprogrammierung 8
F Java-Beispielcode für Zeroconf (ähnlich Apple Bonjour) Netzwerkprogrammierung 7
I HTTP S - Zertifikate+Cockies für Form-basierten Login Netzwerkprogrammierung 2
Ollek Socket Sucher passende Server/Client Lösung für meine Anwendung Netzwerkprogrammierung 2
M Gleicher Port für Senden und Empfangen ? Netzwerkprogrammierung 17
N RMI Einstellungen für "übers Internet" Netzwerkprogrammierung 8
F SSL-Zertifikate für viele Nutzer? Netzwerkprogrammierung 8
K Byte für Byte aus InputStream lesen Netzwerkprogrammierung 5
S wie stell man die classpath für JARs? Netzwerkprogrammierung 3
M Bestimmte Klassen für Netzwerkchecks gesucht Netzwerkprogrammierung 11
M ClassLoader für Axis2 setzen Netzwerkprogrammierung 15
M Welches Speicherformat für News-Database?? Netzwerkprogrammierung 2
Shoox VPN-Verbindung für Datenbankzugriff Netzwerkprogrammierung 2
P Proxy für Anwendung setzten Netzwerkprogrammierung 3
T Bezeichner "end of line" für die Funktion readline Netzwerkprogrammierung 5
A DataGramsocket Übertragungsproblem im Internet (IPs für Voip) Netzwerkprogrammierung 5
E Userliste für Chat Applet Netzwerkprogrammierung 4
S HTTP Kleines Programm für den Routerneustart Netzwerkprogrammierung 3
L Zeitspanne für erneutes senden Netzwerkprogrammierung 16
L Socket Chat Server für mehrere Clients Netzwerkprogrammierung 7
F Netzwerkprogrammierung für Anfänger Netzwerkprogrammierung 2
J Framework/ Muster für Chat-ähnliches Programm gesucht Netzwerkprogrammierung 2
B Variablen ausrichten für Übertragung Netzwerkprogrammierung 2
D FTP Pfadangabe für ftp-upload funktioniert nicht Netzwerkprogrammierung 5
K Getrennte Rechner für RMI-Server/RMI-Registry, bzw. Alternativen? Netzwerkprogrammierung 5
dayaftereh HTTPCleint und HTMLparser für hTTpBot Netzwerkprogrammierung 2
E Socket Client-Applikation mit GUI für Internet IO-Platine Netzwerkprogrammierung 2
0din Grundlage für Bluetooth Netzwerkprogrammierung 5
N "Jungfernflug" der Socketprogrammierung für ein Mühlespiel Netzwerkprogrammierung 8
F Empfehlung für embedded Webserver Netzwerkprogrammierung 10
W Bibliothek für Certificate Management Protocol (CMP) Netzwerkprogrammierung 3
O Client/Server für Ticker Netzwerkprogrammierung 2
J Stubs für SOAP-Webservice generieren. Ich bekomme es einfach nicht hin... Netzwerkprogrammierung 3
dayaftereh Bester Stream für ein Spiel? Netzwerkprogrammierung 15
data89 Sockets: ein alter Hut - für Euch - für mich nicht! Netzwerkprogrammierung 10
G FileDialog für FTP Client Netzwerkprogrammierung 2
P Welches Protokoll für RMI verwenden? Netzwerkprogrammierung 10
H RCON Tool für Gameserver Netzwerkprogrammierung 11
A Wichtig für einen Chat? Netzwerkprogrammierung 4
D Was für Verbindungen mit Socket möglich? Netzwerkprogrammierung 2
S Realisierung eines Netzwerkcodes für ein Strategiespiel Netzwerkprogrammierung 7
G Datagram-Sockets für UDP-Kommunikation Netzwerkprogrammierung 2
W Was für ein Stream soll ich verwenden? Netzwerkprogrammierung 8
A Rezept für Webservices Netzwerkprogrammierung 5
I unc pfad für die klasse file? Netzwerkprogrammierung 4
P eine BufferedReader für alles ankommende Netzwerkprogrammierung 2
T Filter für Input UND OutputStream Netzwerkprogrammierung 4
T Welches Netzwerk ist am bestern für. Netzwerkprogrammierung 2
G server für mein spiel. Netzwerkprogrammierung 5
M Log In Programm für Seiten Netzwerkprogrammierung 2
G Netzwerkprogrammierung für spiele Netzwerkprogrammierung 2
A IRC-Server für das lokale Netzwerk? Netzwerkprogrammierung 12
C Einfacher Filedownload mit Sockets geht nicht für pdffiles Netzwerkprogrammierung 16
S Server für Internetspiel Netzwerkprogrammierung 2
G Objecte für Kommunikation nutzen Netzwerkprogrammierung 2
J Java Programm für Upload von Dateien per HTTP Netzwerkprogrammierung 7
S Voreinstellungen für JavaMail Netzwerkprogrammierung 2
S Idee für Projekt auf Agentenbasis Netzwerkprogrammierung 8
S Suche API für einfachen HTTP-Zugriff. Netzwerkprogrammierung 17
G benötige Beispiel für parallel ablaufende Threads Netzwerkprogrammierung 3
M RMI - Ein Objekt für Alle? Netzwerkprogrammierung 5
Z Protokoll für Schiffeversenken Netzwerkprogrammierung 5
T Kann man jeden Port für Programm verwenden? Netzwerkprogrammierung 2
R proxy für java anwendung angeben [resolved] Netzwerkprogrammierung 15
B Wie Router einstellen für CLient-Server-Programm? Netzwerkprogrammierung 4
R PPTP Protokoll für JAVA Netzwerkprogrammierung 3
Icewind Klasse für DNS Anfragen Netzwerkprogrammierung 14
P Welche Art von Sockets für ein Spiel? Netzwerkprogrammierung 3
M Socket Verbindungen für einen Chat Netzwerkprogrammierung 10
M Ausgangsport für FTp-Connection festlegen??? Netzwerkprogrammierung 3
D beste Methode für Datenübertragung ? Netzwerkprogrammierung 1
M Wo ist mein Fehler ? o: Netzwerkprogrammierung 4
C Über welchen Netzwerkadapter kommt mein receive? Netzwerkprogrammierung 15
P Warum lässt sich mein Server und mein Client einfach nicht schließen?!?! Netzwerkprogrammierung 16
lacyuu Warum empfängt mein Stream keinen Input? Netzwerkprogrammierung 4
T Wieso ist mein Objekt leer? Netzwerkprogrammierung 6

Ähnliche Java Themen

Neue Themen


Oben