Datei von Server auslesen (Java)?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

1) Läuft noch irgendeine andere Instanz der Anwendung?

Wenn die Ausführung der Methode durch irgendetwas blockiert wird, dürfte ja irgendwann eine Exception aufgrund eines Timeouts geworfen werden.

2) Ist der FTP-Server selbst denn noch erreichbar?

PS.: Ich würde dir im Übrigen empfehlen, den BufferedReader zu schließen. Der schließt den inneren Stream dann auch automatisch.

LukSN11 
Fragesteller
 17.05.2019, 19:46

Der FTP Server funktioniert noch und ja ich glaube sie wird durch etwas blockiert, denn es gibt nach einiger Zeit eine Exception aufgrund eines Timeouts. Jetzt müsste man halt noch wissen, durch was sie blockiert wird...

Schonmal danke für die Hilfe bis jetzt.

0
LukSN11 
Fragesteller
 17.05.2019, 19:58

Habe es gerade nochmals getestet und da hat es funktioniert. Wenn ich dann aber die App geschlossen habe und sie nochmal geöffnet habe, hat es nicht mehr funktioniert und die weiteren Male dann auch nicht mehr. Ich habe außerdem den Logcat vom wo es funktioniert und wo es nicht funktioniert verglichen und diese waren bis auf, dass beim einen halt auch "yes2" ausgegeben wurde identisch. Vllt. hilft ihnen diese Information noch. Hätten sie eine Idee, was den InputReader blockieren könnte?

0
regex9  17.05.2019, 20:07
@LukSN11

Du könntest zunächst versuchen, den Fehlerbereich einzuschränken. Schreib dir eine Mini-Desktopanwendung, in der du eine Verbindung zum Server aufnimmst. Wenn sich das Problem reproduzieren lässt, liegt es nicht an deinem Androidsystem.

0
LukSN11 
Fragesteller
 18.05.2019, 11:26
@regex9

Ich habe es an einem anderem Handy getestet und es hat auch nicht funktioniert. Dann habe ich noch eine ganz neue App erstellt nur mit dieser einen Funktion und es hat wieder nicht funktioniert. Wenn ich es aber in Eclipse mit einem ganz normalen Java Programm getestet habe, hat es funktioniert. Dass heißt zusammengefasst: Es liegt nicht an der App und auch nicht an dem Handy. Außerdem tritt das Problem nur bei Android Apps auf, heißt es liegt auch nicht an dem Server. Kann es sein das man noch irgendwas bei Android Extra aktivieren muss, was man bei normalen Java Programmen eben nicht machen muss, damit es funktioniert? Ich hoffe Sie haben eine Idee, denn ich bin wirklich komplett ratlos.

Schonmal vielen Dank für Ihre Hilfe.

0
regex9  18.05.2019, 14:27
@LukSN11

Wieso rufst du die Funktion eigentlich rekursiv auf? Das Auslesen der Datei kann doch über nur einen Thread gehandhabt werden. Eine ständige Aktualisierung (wenn es denn sein muss) kannst du über eine Schleife bewirken. Lies hier.

Was mir zu deinem Problem noch einfällt:

  • Manifest Permissions hast du sicherlich gesetzt? Ich gehe davon aus, denn ansonsten sollte es schon beim ersten Mal nicht funktionieren.
  • Hast du dich bei deinen Tests jeweils im selben Netzwerk befunden (PC, SmartPhones)? Verbindungen von außen könnte der FTP-Server ja noch blockieren.
  • Wäre SFTP eine Alternative? Du hättest zudem eine sichere Verbindung über einen Port (22).
0
LukSN11 
Fragesteller
 19.05.2019, 09:10
@regex9

Ja, das mit der Schleife werde ich ändern und ja alle befanden sich im selben Netzwerk und in der Manifest sind auch die Permissons gesetzt.

Gibt es auch kostenlose SFTP Server, denn ich habe meinen FTP Server momentan kostenlos von bplaced?

Ich kann gleich nochmals versuchen ob es vielleicht mit Mobilen Daten funktioniert.

Viele Dank für Ihre bisherige Hilfe.

0
LukSN11 
Fragesteller
 19.05.2019, 11:47
@regex9

Hallo, das Problem ist mittlerweile nur noch sehr minimal. Jetzt funktioniert alles nähmlich aufeinmal wieder ganz normal. Auch bei mehreren Durchläufen hintereinander. Auch wenn man die App schließt und öffnet klappt alles ohne Probleme. Es gibt nur nach einiger Zeit von Wiederholungen der Schleife eine Fehlermeldung, dass das Passwort bzw. der Username falsch wäre und wenn man danach die App neustartet hängt der Code wieder beim InputStream. Dies lässt sich aber beheben, indem man das Gerät neustartet. Dann klappt es erstmal wieder sehr gut, bis halt diese Invalid username/password Fehlermeldung kommt. Könnte es sein dass diese Fehlermeldung einfach an irgendeinem Sicherheitsmechanismus von Bplaced liegt und dass dann da ja mitten in der Verbindung abgebrochen wird und so vllt. irgendeine Verbindung offen bleibt, die dann ein erneutes Verbinden dann verhindert?

Schonmal Danke für die Hilfe.

0
regex9  20.05.2019, 09:47
@LukSN11

Ich denke, dass irgendwann Verbindungsversuche für eine bestimmte Zeit blockiert werden, da es so viele sind. Verringere mal das Intervall. Ein Lauf alle 30s dürfte beispielsweise reichen, ist im praktischen Nutzen aber sicherlich immer noch zu oft.

0
LukSN11 
Fragesteller
 20.05.2019, 10:19
@regex9

Habe es jetzt ans Ende der Schleife thread.join(2000) eingebaut und die Fehlermeldung kommt nicht mehr und es funktioniert alles gut. Kann es auch zu so einer Blockade kommen, wenn ganz viele Gerät gleichzeitig auf den Server zugreifen und muss das immer von der gleichen IP-Adresse sein, damit die Verbindung zum Server blockiert wird?

0
regex9  20.05.2019, 10:34
@LukSN11

Bei zu vielen Anfragen verschiedener Clients könnte der Server einbrechen. Die Toleranzgrenze ist da aber sicherlich hoch genug.

Eine Blockade macht nur bei bestimmten Geräten Sinn, die es innerhalb kürzester Zeit mehr als einmal versuchen. Meist wird die IP-Adresse für eine Folgeblockade temporär gespeichert.

0
LukSN11 
Fragesteller
 21.05.2019, 14:42
@regex9

Okay, ich werde es jetzt lieber so machen, dass man immer manuell aktualisieren muss. Dann kann es auch zu keinem Crash kommen.

0