• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

PlugIn Websiten abfrage - Lizenzsystem

Graf_Tec

Minecrafter
Registriert
28 April 2020
Beiträge
25
Diamanten
252
Minecraft
Graf_Tec
Hallo Leute,
Ich bin im moment da bei ein Lizenzsystem für minecraft plugins in form einer Api zu basteln.
Nun möchte ich noch abfragen ob der Lizenz-Server überhaupt online ist da es sonnst (ist mir beim Testen aufgefallen) zu extremen Fehlern kommt.
Web abfrage Funktion:
public static  void setHostWebsiteForLizenz(String web) throws IOException {
        if(web.isEmpty()){
            Bukkit.getConsoleSender().sendMessage(prefix1 + "§c§lDu musst gültigen einen Host setzen! Der Server faehrt runter!");
            Bukkit.shutdown();
            HostSwitch = true;
        }
        checklizens(new URL(web));
    }
Wie kann ich bei web prüfen ob der Server online ist?
Lg Graf_Tec
 

Graf_Tec

Minecrafter
Registriert
28 April 2020
Beiträge
25
Diamanten
252
Minecraft
Graf_Tec
Wie sieht denn dein System aus - bzw. explizit dein Lizenzserver? Über welches Protokoll kommunizierst du mit diesem?
Am Anfang generiere ich eine config.yml dort gibt es Lizenz: „“ dort soll man seine Lizenz eingeben, dann wird eine Verbindung zum Lizenz-Server/Website aufgebaut, dort werden alle Zeichen von der Seite in einen String gepackt und dann verglichen.

Ich weiß das System ist nicht wirklich das sicherste allerdings will ich es einfach mal zum Testen probieren
 

PSandro

Kuhfänger
Registriert
7 November 2016
Beiträge
51
Diamanten
302
Okay.
In Zeile 7 übergiebst du eine URL. Wie verfährst du damit? Wenn du dort eine Verbindung aufbaust, müsste dir ja an der Stelle eine Exception (z.B. SocketTimeoutException IOException) entgegenkommen, falls das Ziel nicht erreichbar ist.

In einem catch Block kannst du die Exception auffangen und dort deine Logik implementieren (z.B. den Bukkit-Server stoppen).

Java:
private static boolean isOnline(final URL server) {
  boolean online = true;
  try {
    final URLConnection connection = server.openConnection();
    connection.connect(); 
  } catch (Exception e) {
    online = false;
  }
  return online;
}

Vergiss nicht, den ganzen Netzwerkkram asynchron und nicht im Mainthread zu erledigen :)
 

Graf_Tec

Minecrafter
Registriert
28 April 2020
Beiträge
25
Diamanten
252
Minecraft
Graf_Tec
Okay.
In Zeile 7 übergiebst du eine URL. Wie verfährst du damit? Wenn du dort eine Verbindung aufbaust, müsste dir ja an der Stelle eine Exception (z.B. SocketTimeoutException IOException) entgegenkommen, falls das Ziel nicht erreichbar ist.

In einem catch Block kannst du die Exception auffangen und dort deine Logik implementieren (z.B. den Bukkit-Server stoppen).

Java:
private static boolean isOnline(final URL server) {
  boolean online = true;
  try {
    final URLConnection connection = server.openConnection();
    connection.connect();
  } catch (Exception e) {
    online = false;
  }
  return online;
}

Vergiss nicht, den ganzen Netzwerkkram asynchron und nicht im Mainthread zu erledigen :)
Super jz gehts, vielen Dank
 

Graf_Tec

Minecrafter
Registriert
28 April 2020
Beiträge
25
Diamanten
252
Minecraft
Graf_Tec
Ich möchte dir keinesfalls zu nahe treten, aber diese Frage zeigt mir, dass du die Programmiersprache Java nicht richtig beherrschst. Mit mehreren Threads zu arbeiten, gehört zu den Basics. Auch dein Programmierstil, den ich ja an anderer Stelle schonmal angesprochen habe, weist auf gravierende Wissenslücken hin.

Worauf ich hinaus will: Ich denke, dass du dich mit einem Lizenzierungssystem, bei dem immerhin auch Sicherheit eine wichtige Rolle spielt, etwas übernommen hast. Klar, zum lernen geht auch mal was weniger sicheres, aber der Lerneffekt bleibt aus, wenn da verschiedene fortgeschrittenere Themen eine Rolle spielen, obwohl die Basics schon nicht stimmen. Netzwerkprogrammierung ist ein eher fortgeschrittenes Thema.
In Sachen Objektorientierung, Nebenläufigkeit (Threads, Prozesse etc.) etc. solltest du bereits vorher sicher sein. Auch die Theorie ist da wichtig. In der IDE drauflostippen ohne solides Grundwissen bringt überhaupt nichts. Und für die Praxis, in denen du dein schrittweise erworbenes Wissen sinnvoll anwenden kannst, gibt es Projekte, die für deinen bisherigen Kenntnisstand zum lernen und üben besser geeignet sind.
Als erstes nein du trittst mir damit nicht zu nahe.

Ich weiß mein Programmierstil ist unter jeder niedrigsten Erwartung-Stufe...

Ich möchte dir gerne mal erzählen wie ich damit angefangen habe:

Vor ca 1 halben Jahr hat mich ein Freund mal angesprochen ob ich nicht Lust hätte das er mir mal ein bisschen das Programmieren mit Java im genaueren für Mc zeigen soll. Da ich schon seit mehr als 1,5 Jahre mit C regelmässig programmiere(In C kenne ich mich bestens aus da ich mich mit meinem Lehrer einmal in der Woche treffe. Dieser ist Doplom-Informatiker und hat mehr als 30 Jahre bei Siemens gearbeitet). Ihm (dem Freund) ist nicht so wichtig ob die Basics stimmen sonder das dass Programm einfach Funktioniert, egal wie. Und diesen Stil hab ich 1 zu 1 von ihm übernommen. Wenn ich’s mir so im Nachhinein anschaue merke ich auch das war ein Fehler...

Aber hättest du irgendeine Empfehlung für mich wie ich die Java Conventions und alle Basics lernen könnte?
Ein Buch oder eine Empfehlenswerte Viedeo-Reihe?
 
Oben