ArrayList ist eine generische Klasse. Generische Klassen haben die Eigenschaft, dass man sie bei der Initialisierung typisieren kann. Das heißt, dass ich einen Datentyp angeben kann, womit die Klasse dann etwas machen kann. Bspw ist der generische Typ der Klasse ArrayList der Datentyp der Elemente der ArrayList.
Also wenn ich eine ArrayList mit dem generischen Typ String erstelle, sind die Elemente der Klasse vom Typ String.

...zur Antwort
Wieso funktioniert der Java Broadcast(DatagramSocket) nicht unter Windows?

Hallo Community,

ich habe in mein Netzwerkprogramm einen Broadcast implementiert, sodass sich Client und Server finden können.

Doch leider funktioniert das nicht, wie ich es mir wünsche. Eher gesagt funktioniert es nur auf macOs und nicht unter Windows.

Ich hole mir zuerst die Broadcast Adressen über:

broadcast = new ArrayList<>();
        try {
            Enumeration<NetworkInterface> networkInterface = NetworkInterface.getNetworkInterfaces();

            while (networkInterface.hasMoreElements()){
                NetworkInterface inter = networkInterface.nextElement();
                List<InterfaceAddress> addresses = inter.getInterfaceAddresses();

                for (InterfaceAddress interfaceAddress : addresses){
                    InetAddress broad = interfaceAddress.getBroadcast();
                    if (broad != null){
                        broadcast.add(broad);
                        System.out.println(broad.getHostAddress());
                    }
                }

            }

        } catch (IOException e) {
            e.printStackTrace();
        }

Danach iteriere ich über die Liste broadcast und erstelle für jede InetAddress einen Thread, welche folgendes tut: (host ist hier die aktuelle InetAddress)

DatagramSocket socket = null;
        try {
            socket = new DatagramSocket(NetworkUtils.BROADCAST_PORT, host);
            socket.setBroadcast(true);
        } catch (SocketException e) {
            new AdviceScreen(new Error(2));
            e.printStackTrace();
        }

        while (broadcasting){

                byte[] buffer = new byte[500];
            DatagramPacket packet = new DatagramPacket(buffer, buffer.length);

            try {
                socket.receive(packet);
            } catch (IOException e) {
                e.printStackTrace();
            }

            byte[] key = NetworkUtils.KEY.getBytes();
            String msg = new String(packet.getData()).trim();
            if (msg.equals(NetworkUtils.KEY)) {
                DatagramPacket reply = new DatagramPacket(key, key.length, packet.getAddress(), NetworkUtils.BROADCAST_PORT);
                try {
                    DatagramSocket replySocket = new DatagramSocket();
                    replySocket.send(reply);
                } catch (SocketException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            } else {
                System.out.println("NOT EQUAL");
            }

(Der Client tut entsprechend das "Gegenstück", also sendet zuerst und empfängt dann)

Zu meinem Problem: Wenn ich dieses Programm unter macOs starte, funktioniert alles einwandfrei. (weiter gehts im Kommentar :/ )

...zum Beitrag

Doch unter Windows bekomme ich die Fehlermeldung "Cannot assign requested address: cannot bind"

Ich es schon mit deaktivierter Firewall probiert, bzw die entsprechenden Regeln festgelegt.

Weiß jemand, woran das liegen könnte? :)

...zur Antwort

Du legst eine Variable an. Darin wird der Index des größten Elementes gespeichert.
Jetzt gehst du einmal durch die Schleife und vergleichst den Wert an der Stelle des Indexes mit dem an der Stelle, wo du gerade in der Liste bist.

Also

index = 0
for i in range(len(liste)):
    if liste[i] > liste[index]:
       index = i
return liste[index]
      

...zur Antwort

Das bedeutet, dass diese Geschwindigkeit für die darunter angegebene Strecke gilt. Wenn diese Kombination innerorts steht darfst du für 100m 60km/h fahren danach wieder 50km/h. Du findest sowas oft bei Schulen oder Kindergärten. Viel Erfolg.

...zur Antwort

Weil du als Bedingung in der for-Schleife laufzeit == laufzeit hast. Und das ist immer true. Du müsstest das in laufzeit <= this.laufzeit ändern. Dann sollte alles klappen.

...zur Antwort

Kommt darauf an was du haben möchtest. Soll es zum erlernen der Sprache sein oder ein Nachschlagewerk?

Zum erlernen der Sprache: Programmieren lernen mit Java von Hans-Peter Habelitz

Als Nachschlagewerk:
Java ist auch eine Insel

...zur Antwort

Wenn du etwas Englisch kannst schau mal bei https://www.codecademy.com/ vorbei. Dort kannst du dich anmelden und Schritt für Schritt die gewählte Programmiersprache lernen :)

...zur Antwort

Die meisten Lehrer beobachten die Schüler im Unterricht und da können sie schon sehr gut herausfinden wer am meisten macht etc. 

...zur Antwort

Ich kann aus den Informationen nur herauslesen das readerIndex 180 ist aber zwischen 0 und 90 sein soll oder sowas. Was auch immer das jetzt bedeutet wissen nur die Minecraft Entwickler.. 

Starte mal den Server und eure Minecraft Programme neu.

...zur Antwort

Generell ist es natürlich wichtig sichere Passwörter zu haben. Dafür muss man aber erstmal überlegen was sicher für einen Computer bedeutet. Für Menschen sieht: KdePmWoa sicherer aus als: PassWort . Doch für den Computer ist es die selbe Herausforderung. Ich persönlich nutze die App 1Password, diese kann mir für Websites, Accounts, etc. sichere Passwörter generieren und diese speichern. Zugriff habe ich auf sie mit einem sogenannten Master Passwort. 

Aber zurück zu deiner Frage: 

Allgemein ist es erstmal nur wichtig das du überall wo du dich anmeldest ein einigermaßen sicheres Passwort verwendest, sodass der Hacker nicht durch BruteForce oder ähnliche Attacken in deinen Account kommt.

Doch wenn der Hacker sich Zeit nimmt und in die Datenback wo dein Account hinterlegt ist eindringen möchte, kann dein Passwort noch so lang sein. Dann bist du deinen Account schonmal los. Es ist natürlich klar, dass sowas einfacher bei kleinen Internet Foren geht, als bei Apple, Google, Facebook, etc. An diese Accounts will der Hacker aber somit versucht er mit deiner E-mail Adresse und dem Passwort weiter zu kommen.

Wenn du jetzt aber für die wirklich wichtigen Account andere E-mail Adressen verwendest, kann der Hacker mit den gewonnen Informationen wenig anfangen. 

Ein Hacker muss auch nicht sofort in die Datenbank eindringen. Auch einfache Methoden wie Phishing sind leider oftmals effektiv.  

Aber das wichtigste sind die Passwörter der E-Mail Accounts, denn wenn der Hacker diese hat kann er in alle Accounts die du hast, durch einfaches zurücksetzen des Passwortes und ändern der E-Mail Adresse. Wenn er dann Identitätsklau betreibt hast du verloren, den dass lässt sich nur sehr schwer beweisen, das du es nicht warst.

Zusammengefasst:

Es ist egal in welcher Website der Hacker versucht an deine Daten zu kommen. Er will immer mehr Informationen über dich haben, also schütze dich dagegen, indem du verschiedene E-Mail Adressen benutzt, etc. 

Die meisten gehackten Accounts sind aber durch abfangen von Informationen entstanden. Also antworte nicht auf E-Mails wo du aufgefordert wirst dich bei Facebook neu einzuloggen etc. 

Die Zwei-Stufen Sicherheit wird auch mittlerweile oft angeboten, damit kannst du im Falle das du gehackt wurdest schnell reagieren und ggf. andere Passwörter schnell ändern.

Sichere Passwörter erreichst du, indem du Groß-, Kleinbuchstaben, Zahlen und Sonderzeichen einbaust. Desweiteren ist auch der Name des Haustieres nicht gut, der Angreifer muss nur einmal auf deiner Facebook Seite vorbeischauen und kennt evtl. dein Passwort. 

Hoffe ich konnte etwas helfen :)

...zur Antwort

Ich lerne am besten wenn ich den Stoff durch und durch wiederhole.

z.B. Englisch-Vokabeln schreibe ich oft garnicht mehr auf. Ich setzt mich hin und lese sie mir immer und immer wieder durch, solange bis ich sie auswendig kann.

Generell ist es wichtig dir immer nur kleine Teile vorzunehmen, diese solange üben bis du sie kannst und dann den nächsten Teil, anstatt sofort den gesamten Stoff versuchen auswendig zu lernen.

Pausen sind auch sehr wichtig. Lerne ab besten 30- 50 min und mach Pause und dann gehts an die nächste Schicht.

So funktioniert es bei mir eigentlich sehr gut :D

...zur Antwort

Du kannst mit Hilfe des FileChoosers von JavaFX dir eine entsprechende .mp3 Datei in ein File Object abspeichern. Und dann einfach mit Hilfe der Media und der MediaPlayer Klasse diese abspielen. 

...zur Antwort

Die IO Exception bedeutet einfach nur, dass bei der Ein-(Input) und Aus(Output)gabe eine Ausnahme aufgetreten ist. Es scheint, dass dein PC sich nicht mit dem Server verbinden kann. Wenn die Exception bei  jedem Server kommt, starte mal deinen Router neu. Falls es nur bei dem Server ist, ist dieser wahrscheinlich zurzeit nicht erreichbar.

...zur Antwort

https://youtube.com/watch?v=volc2pudJf8   

Schau dir das mal an. Hoffe es kann dir weiter helfen :)

...zur Antwort

Ganz einfach. Du überprüfst ob es die Datei die du haben möchtest schon gibt. Wenn ja kannst du sie laden wenn nicht musst du sie von deinem Programm erstellen lassen. Dann lädst du dir den Inhalt der Datei und speicherst ihn in einer Variable ab. Wenn ein neuer Highscore errichtet ist schreibst du ihn in die Datei rein.

...zur Antwort