Jetzt kostenlos registrieren. Mitglieder surfen ohne Werbung auf Android-Hilfe.de!
Zurück   Android-Hilfe.de > Android Developer > Android App Entwicklung

Socket Verbindung löst BufferOverflow aus

Das Thema "Socket Verbindung löst BufferOverflow aus" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.


Antwort

 

Themen-Optionen Ansicht
Alt 04.12.2011, 00:10   #1 (permalink)
Fortgeschrittenes Mitglied

Registriert seit: 17.03.2010
Beiträge: 353
Abgegebene Danke: 41
Erhielt 52 Danke für 37 Beiträge
Standard Socket Verbindung löst BufferOverflow aus

Hallo zusammen,

ich bastel gerade für die Uni an einer App, die mit einem Server kommuniziert.
Der Server läuft und die App ebenfalls.

Leider führt die Socket-Verbindung auf einen Win7-Rechner, der durch eine Firewall geschützt ist zu einem BufferOverflow, da der Windows-7-Rechner wohl auf die Eingabe von Username und Passwort wartet..

Ich fange schon eine UnknownHost- und I/O-Exception ab aber das hilft in diesem Fall leider nicht.

Mein Code Abschnitt:
Code:
try {
            echoSocket = new Socket(ipAdress, port);

            out = new PrintWriter(echoSocket.getOutputStream(), true);
            in2 = new BufferedReader(new InputStreamReader(echoSocket
                    .getInputStream()));

            connected = true;
            System.out.println("OUTPUT: " + in2.readLine());
            
        } catch (UnknownHostException e) {
            System.out.println("UnknownHost");
            connected = false;
        } catch (IOException e) {
            System.out.println("I/O-Exception");
            connected = false;
        }
Kann ich dies irgendwie abfangen?
Eine Exception wird mit im DBMS-LogCat leider nicht ausgeben..
Da Handy arbeitet halt und läuft irgendwann in den Overflow..


Viele Grüße
Chris
ChrisMobile ist offline   Mit Zitat antworten
Alt 06.12.2011, 10:45   #2 (permalink)
Junior Mitglied

Registriert seit: 18.07.2010
Beiträge: 44
Abgegebene Danke: 0
Erhielt 5 Danke für 5 Beiträge
Standard AW: Socket Verbindung löst BufferOverflow aus

Zitat:
Zitat von ChrisMobile Beitrag anzeigen
Leider führt die Socket-Verbindung auf einen Win7-Rechner, der durch eine Firewall geschützt ist zu einem BufferOverflow, da der Windows-7-Rechner wohl auf die Eingabe von Username und Passwort wartet..
Kommt der BufferOverflow auf dem WIN7-Rechner oder auf deinem Handy?
Maddi ist offline   Mit Zitat antworten
Folgender Benutzer bedankt sich bei Maddi für diesen Beitrag:
ChrisMobile (07.12.2011)
Alt 06.12.2011, 11:54   #3 (permalink)
Fortgeschrittenes Mitglied

Registriert seit: 17.03.2010
Beiträge: 353
Abgegebene Danke: 41
Erhielt 52 Danke für 37 Beiträge
Standard AW: Socket Verbindung löst BufferOverflow aus

Auf dem Handy.

Ich konnte es nun aber schon etwas weiter eingrenzen.
Es ist doch kein BufferOverflow, obwohl es sich ganz ähnlich verhält!
Die Last steigt jedoch nicht, dazu habe ich unten ein Ausschnitt aus dem LogCat ausgelöst.
Im LogCat bekomme ich nach dem starten der App nur die Meldung: keyDispatchingTimedOut (Log ist unten).

Das Problem ist, dass sich das Handy dank der Win7-Firewall nicht mit dem Rechner verbinden kann aber eben auch keine UnknownHostException auftritt.
Die GUI ist natürlich eingefrohrern und nix geht mehr, bis Android fragt o die App beendet werden soll.

Natürlich kann ich alles in einen Thread auslagern aber es kommt dank Firewall eben gar keine Verbindung zu Stande, gibt es eine Möglichkeit nur für den Verbindungsversuch ein Timeout anzugeben?

Wenn die Firewall abgestellt wird, klappt es ohne Probleme.

Code:
12-05 16:24:31.664: E/ActivityManager(194): ANR in de.uni.sCg.acc (de.uni.sCg.acc/.Login),  time=64098484
12-05 16:24:31.664: E/ActivityManager(194): Reason: keyDispatchingTimedOut
12-05 16:24:31.664: E/ActivityManager(194): Load: 2.81 / 7.87 / 7.41
12-05 16:24:31.664: E/ActivityManager(194): CPU usage from 25634ms to 0ms ago:
12-05 16:24:31.664: E/ActivityManager(194):   0.6% 155/akmd: 0% user + 0.6% kernel
12-05 16:24:31.664: E/ActivityManager(194):   0.4% 194/system_server: 0.1% user + 0.2% kernel / faults: 10 minor 2 major
12-05 16:24:31.664: E/ActivityManager(194):   0.1% 26362/android.process.media: 0.1% user + 0% kernel / faults: 60 minor
12-05 16:24:31.664: E/ActivityManager(194):   0% 4/events/0: 0% user + 0% kernel
12-05 16:24:31.664: E/ActivityManager(194):   0% 60/w1_bus_master1: 0% user + 0% kernel
12-05 16:24:31.664: E/ActivityManager(194):   0% 73/adbd: 0% user + 0% kernel / faults: 67 minor
12-05 16:24:31.664: E/ActivityManager(194):   0% 356/com.android.phone: 0% user + 0% kernel / faults: 23 minor
12-05 16:24:31.664: E/ActivityManager(194):   0% 26339/de.uni.sCg.acc: 0% user + 0% kernel
12-05 16:24:31.664: E/ActivityManager(194):   0% 57/synaptics_wq: 0% user + 0% kernel
12-05 16:24:31.664: E/ActivityManager(194):   0% 259/com.android.systemui: 0% user + 0% kernel / faults: 2 minor
12-05 16:24:31.664: E/ActivityManager(194):   0% 393/dhd_dpc: 0% user + 0% kernel
12-05 16:24:31.664: E/ActivityManager(194):   0% 418/wpa_supplicant: 0% user + 0% kernel
12-05 16:24:31.664: E/ActivityManager(194):   0% 23443/com.google.android.apps.maps:NetworkLocationService: 0% user + 0% kernel / faults: 14 minor
12-05 16:24:31.664: E/ActivityManager(194):   0% 25665/com.google.android.apps.unveil: 0% user + 0% kernel
12-05 16:24:31.664: E/ActivityManager(194):   0% 26396/logcat: 0% user + 0% kernel / faults: 1 minor
12-05 16:24:31.664: E/ActivityManager(194): 1.2% TOTAL: 0.4% user + 0.6% kernel + 0% iowait + 0% softirq
12-05 16:24:31.664: E/ActivityManager(194): CPU usage from 491ms to 1008ms later:
12-05 16:24:31.664: E/ActivityManager(194):   1.2% 155/akmd: 0% user + 1.2% kernel
12-05 16:24:31.664: E/ActivityManager(194):   1.9% 194/system_server: 1.9% user + 0% kernel / faults: 1 minor
12-05 16:24:31.664: E/ActivityManager(194):     3.8% 229/InputDispatcher: 3.8% user + 0% kernel
12-05 16:24:31.664: E/ActivityManager(194): 3.8% TOTAL: 1.9% user + 1.9% kernel
ChrisMobile ist offline   Mit Zitat antworten
Alt 07.12.2011, 19:42   #4 (permalink)
Fortgeschrittenes Mitglied

Registriert seit: 17.03.2010
Beiträge: 353
Abgegebene Danke: 41
Erhielt 52 Danke für 37 Beiträge
Standard AW: Socket Verbindung löst BufferOverflow aus

Ich konnte das Problem nun lösen.

Socket socket = new Socket(ip,port);
Versucht pausenlos sich zu verbinden, wenn der andere Rechner nicht antwortet (z.B. wegen einer Firewall oder weil einfach nichts passiert) versucht die Methode es immer weiter.

Die Lösung ist Folgendes:
Code:
...
            //echoSocket = new Socket(ipAdress, port);
            echoSocket = new Socket();
            echoSocket.connect(new InetSocketAddress(ipAdress, port), 2000);
...
ChrisMobile ist offline   Mit Zitat antworten
Antwort

Stichworte
-

Themen-Optionen
Ansicht


Ähnliche Themen

Thema Autor Forum Antworten Letzter Beitrag
Kamera löst zu langsam aus Oskar187 Samsung Galaxy S (I9000) Forum 13 28.10.2011 15:29
DroidCam socket error:socket is not connected germanytwo Sonstige Apps & Widgets 10 15.07.2011 18:08
Kamera löst nicht aus! ghost_chillt Sony Ericsson Xperia X10 Forum 1 30.01.2011 12:05
SGS löst Diebstahlwarnanlage aus? Marauder Samsung Galaxy S (I9000) Forum 8 09.09.2010 16:46
Probleme beim Lesen aus Socket Schause Android App Entwicklung 6 13.09.2009 22:21




Du liest gerade: "Socket Verbindung löst BufferOverflow aus" unter "Android App Entwicklung" auf Android-Hilfe.de.


Powered by vBulletin®
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
© Android-Hilfe.de 2012 - All rights reserved.