1. Fubinat0r, 05.03.2012 #1
    Fubinat0r

    Fubinat0r Threadstarter Neuer Benutzer

    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
    Code:
        public TCPServer() 
        {    
            try
            {
                sSocket = new ServerSocket(port);
            }    catch(IOException e)
            {
                System.out.println("Could not listen on port: " + port);
                System.exit(-1);
            } 
        }
        
        public void akzeptieren()
        {
            
            Socket client = null;
            while(true){
                try
                    {
                        System.out.println("Warte auf eingehende Verbindung");
                        sSocket.setSoTimeout( 60000 );
                        client = sSocket.accept();
                        System.out.println("Verbindung wurde hergestellt!");
                    }     catch(IOException e)
                    {
                    System.out.println( "Timeout!" );
                }
            }
        }
    
    Client:
    Code:
        public void verbinden(View v) {
            
            try{
                clientSocket = new Socket(ipa, 4224);
                setContentView(R.layout.main);
            }    catch (IOException e)
            {
                VerbindungFail = Toast.makeText(RaketenwerferActivity.this, "Verbindung fehlgeschlagen!", Toast.LENGTH_SHORT); 
                VerbindungFail.show();
            }        
        }
    

    Ich hoffe ihr könnt mir schnellstmöglich irgendwie weiterhelfen!
     
  2. the_alien, 05.03.2012 #2
    the_alien

    the_alien Android-Lexikon

    logcat
     
  3. Fubinat0r, 05.03.2012 #3
    Fubinat0r

    Fubinat0r Threadstarter Neuer Benutzer

    Achso:

     
  4. the_alien, 05.03.2012 #4
    the_alien

    the_alien Android-Lexikon

    Da haben wir das Problem doch: NetworkOnMainThreadException

    Du musst einen neuen Thread aufmachen um eine Netzwerkverbindung herzustellen. Wenn du nur Daten laden möchtest am einfachsten über einen AsyncTask.
     
  5. Fubinat0r, 05.03.2012 #5
    Fubinat0r

    Fubinat0r Threadstarter Neuer Benutzer

    Danke, das hat mir schonmal weitergeholfen. Die Verbindung klappt anscheinend nun. Eine kleine Frage hätte ich noch:
    Kann den Clienten irgendwie timeouten lassen, wenn er ne bestimmte Zeit nicht Connecten kann bzw dass er einfach vom try in den catch block springt?
     
  6. the_alien, 05.03.2012 #6
    the_alien

    the_alien Android-Lexikon

    Timeout setzt du doch schon und die Exception fängst du auch.
    Was genau möchtest du noch?
     
  7. Fubinat0r, 05.03.2012 #7
    Fubinat0r

    Fubinat0r Threadstarter Neuer Benutzer

    Mein code sieht derzeit so aus:
    Code:
    public void verbinden(View v) {
            pd = ProgressDialog.show(this, "Verbinden", "Verbinde...", true, false);
            Thread thread = new Thread(this);
            thread.start();
            setContentView(R.layout.main);
        }
        
        public void run() {
            try{
                clientSocket = new Socket(ipa, 4224);
                handler.sendEmptyMessage(0);
            }    catch (IOException e)
            {
                handler.sendEmptyMessage(0);
                VerbindungFail = Toast.makeText(RaketenwerferActivity.this, "Verbindung fehlgeschlagen!", Toast.LENGTH_SHORT); 
                VerbindungFail.show();
            }
        }
        
        private Handler handler = new Handler(){
            public void handleMessage(Message msg) {
                pd.dismiss();
        }
    Wenn er keine Verbindung kriegt, dann bleibt der Progressdialog, d.h. er hängt wohl an der " clientSocket = new Socket(ipa, 4224);" Zeile. Weil wenn er nicht connecten kann, dann müsste re ja in de Exception springen und den Dialog schließen und den Toast anzeigen und wenn er Connecten kann müsste sich der Dialog ebenfalls schließen. Da er ja bleibt und ich das nicht möchte, will ich, dass er nach ner bestimmten Zeit, in der er nicht connecten kann, den Catch-Block ausführt.
     
  8. the_alien, 05.03.2012 #8
    the_alien

    the_alien Android-Lexikon

    Warum sollte der Dialog geschlossen werden wenn die Verbindung klappt? Dann landest du ja nicht im catch block.
     
  9. Fubinat0r, 05.03.2012 #9
    Fubinat0r

    Fubinat0r Threadstarter Neuer Benutzer

    Ne, ne. Er soll geschlossen werden, wenn die Verbindung ne bestimmte Zeit lang nicht klappt. Das macht er ja von alleine, dauert nur etwas lange.

    Das ist halt grade zu Testzwecken schön, wenn man ihn nach 5 Sekunden timeouten lassen kann und nicht 2 Minuten warten muss.
     
    Zuletzt bearbeitet: 05.03.2012
Die Seite wird geladen...
Ähnliche Themen - App stürzt bei Forum Datum
[ERLEDIGT] App stürzt neuerdings beim anzeigen des eigenen Standorts ab Android App Entwicklung 19.03.2017
App stürzt beim Button Klick ab Android App Entwicklung 12.01.2017
App stürzt bei Start ab Android App Entwicklung 22.12.2016
App stürzt beim Empfangen ab Android App Entwicklung 04.09.2016
App stürzt bei Start ab Android App Entwicklung 01.09.2016
Woran kann es liegen das meine App bei Android 4.2 nach der Installation abstürzt? Android App Entwicklung 23.07.2016
App stürzt nach zusammenführung zweier Projekte ab Android App Entwicklung 06.01.2017
[Meinung] Spezielle App für Mittelstand erstellen (lassen) Android App Entwicklung Dienstag um 17:40 Uhr
[SINNLOS] Temporäre Spielwiese für die neue AH-App - einfach ignorieren Android App Entwicklung Dienstag um 13:31 Uhr
[ERLEDIGT] put in HashMap bringt App zum abstürzen Android App Entwicklung Montag um 11:27 Uhr