App stürzt bei Versuch einen TCPSocket zu erstellen ab

  • Hi,


    ich sitze derzeit an meiner Facharbeit in Informatik und komme seit
    Stunden nicht weiter. Ich möchte über einen TCP-Socket mein Handy mit
    dem Computer verbinden. Die Serverseite funktioniert einwandfrei, denn
    wenn ich einen Clienten starte, der keine Androidapp ist, kann ich
    connecten. Wenn ich nun jedoch versuche über die App einen Clienten zu
    erstellen, stürzt mir das programm ab. Wichtig wäre evtl. zu wissen,
    dass es mir abstürzt seit ich folgendes in der Manifest.xml stehen hab:


    Code
    <uses-permission 
    android:name="android.permission.INTERNET"></uses-permission>

    Vorher
    schlug die Verbindung einfach immer fehl.




    Hier mal die wichtigen Codeschnipsel der Clienten und Serverseite:




    Server


    Client:




    Ichh hatte hier im forum auch schon was dazu gefunden, aber irgendwie bin ich damit auch nicht zur Lösung gekommen.


    Ich hoffe ihr könnt mir schnellstmöglich irgendwie weiterhelfen!

  • Hi Fubinator,


    also das hier brauchst du aufjedenfall


    Zitat

    <uses-permission
    android:name="android.permission.INTERNET"></uses-permission>


    ohne das ist keien verbindung übers internet möglich.


    was sagt denn die LogCat?


    Mfg Titus

  • Die Logcat sagt das:


  • Hi


    was stehtn an dieser Stelle iun deinem Code:


    Code
    "rocket.launcher.RaketenwerferActivity.verbinden(RaketenwerferActivity.java:36)"


    Tipp: keine Ahnung ob du es gemacht hast oder noch machen möchtest, kapsel deine Socketverbindung in einen seperaten Thread sonst meckert Android


    aber primär ist erst mal wichtig was den Absturz verursacht.


    mfg Titus

  • Zeile 36 ist genau der Versuch zu Verbinden

    Java
    clientSocket = new Socket(ipa, 4224);


    Das mit dem seperaten Thread werde ich wohl auch mal machen.



    Edit: Das mit dem neuen Thread hat mein Problem gelöst. Eine kleine Frage hätte ich jedoch noch: kann ich irgendwie den Clienten nach ner bestimmten Zeit, die er connecten will timeouten lassen? Also dass er einfach nach ner bestimmten zeit vom try in den catch block springt?

  • Hi,


    in Android muss man die Netzwerkdienste in einen extra Thread auslagern, wie Fubinator schon erwähnt hat.
    Ich habe dazu AsyncTask benutzt, den mit "normalen" Threads ist es kompliziert eine Ausgabe auf die UI zu bekommen.


    Ich programmiere noch nicht solange mit Android, aber im Catchbreich des Tryblocks manipuliere ich die UI immer so, dass mir der Fehler ausgegeben wird ohne, dass die App "ohne" Grund abschmiert. z.B. mit

    Java
    try{
    blablabla;
    }catch(Exception e){
    utextfield.setText(e.toString());
    }



    Viele Grüße :)

Jetzt mitmachen!

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