UDP Server in Android APP (While Schleifen Problem)

  • Hallo,


    ich habe eine kleine App entwickelt (meine ersten Erfahrungen mit Android APP), welche einfach nur Nachrichten von einem PC empfangen soll, bzw. nachrichten zu einem PC senden soll.


    Das Senden funktioniert einwandfrei!
    Das Empfangen spinnt irgendwie rum.


    Ich nehme mir wie oft beschrieben eine runnable(); und lasse dadrin meinen "Server" auf nachrichten warten.

    Code
    Runnable runnable = new Runnable() {        public void run() {            int PORT = 11000;            byte[] buf = new byte[1000];            DatagramPacket dgp = new DatagramPacket(buf, buf.length);            DatagramSocket sk;
                try {                sk = new DatagramSocket(PORT);                Log.d("Nachricht","  Läuft!");                while (true) {                    Log.d("Nachricht","  Läuft!");
                        try {                        sk.receive(dgp);                        String rcvd = new String(dgp.getData(), 0, dgp.getLength());                        if(rcvd != null){                        Log.d("Nachricht"," Empfangen!");                        }
                        } catch (IOException e) {                        e.printStackTrace();                    }	    		}            } catch (SocketException e) {                e.printStackTrace();            }
            }
        };


    (Wie kriege ich den Code hier sauber Formatiert rein ?! Der wird immer umformatiert -.- )


    So weit so gut...


    Nur das Problem dabei ist, es werden keine Nachricht ausgegeben...
    Log.d("Nachricht"," Läuft!"); kommt 1 mal ...


    Log.d("Nachricht"," Empfangen!"); wird mir nicht ausgegeben...



    Ich habe die Richtige IP an die ich sende (gebe ich bei Nachrichten zum PC mit).
    Sende vom PC aus auch auf Port 11000, also das scheint für mich richtig zu sein...


    Ich glaube irgendwie das die While-schleife sofort wieder beendet wird, was sie ja eigentlich nicht sollte da While(true) eine Endlosschleife ist ...


    Ich weiß das dies alles mit GCM geht, aber das ist mir gerade noch ein wenig zu hoch, da brauche ich mehr ruhe und zeit für.
    Dachte das dieses hier schnell kurz und einfach ist ^^


    Hoffe irgendwer findet meinen Fehler oder kann mir erklären warum eine Endlosschleife direkt beendet wird ...


    VG Jens
    ps: Schönen Sonntag :)

  • Ich benutze immer den Quellcodeeditor statt des Texteditors, damit geht das mit dem Code eigentlich.


    Wenn ich die Sache richtig deute, dann wird Deine while-Schleife überhaupt nicht ausgeführt.
    Theoretisch sollte es Dich zumindest mit "Nachricht" "Läuft!" zuballern.


    An Deiner Stelle würde ich erst einmal diese ganzen Try-Catch-Blöcke rauswerfen. Du machst ja eh nix Sinnvolles mit den Exceptions, dann kannst Du es auch gleich ganz bleiben lassen…


    Dann setzt Du Dir einen Breakpoint auf Deine Portzuweisung und steppst Dich Schritt für Schritt durch Deinen Code.
    So dürftest Du ziemlich schnell sehen, wo das Ganze aussteigt.

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!