dateien kopieren, am localhost funktionierts, im netz nicht

Status
Nicht offen für weitere Antworten.

daneelolivaw

Mitglied
Hallo!

Ich habe folgendes Problem: Hab mir eine Anwendung (Client/Server) geschrieben die es mir möglich macht von einem Rechner auf den anderen zuzugreifen, dort im Dateisystem zu browsen und natürlich auch Dateien runterzuladen. Das ganze funktioniert auch super wenn ichs auf meinem Rechner teste...also hald Server bei mir und ich connecte mit dem Client der auch bei mir läuft zu meiner IP. Ich kann browsen und Dateien runterladen.

Habe das ganze jetzt aber natürlich auch im LAN gestestet und da habe ich jetzt folgendes Problem:
Ich starte am Rechner meines Bruders (WinXP) den Server und verbinde mich von meinem Rechner (Kubuntu 7.04) aus zum Server bei meinem Bruder. Zuerst funktioniert das ganze super. Ich kann im Dateisystem herumbrowsen was ich will jedoch wenn ich eine Datei downloaden will passiert folgendes. Der Server beginnt Daten zu schaufeln und der Client liest auch brav Daten aus seinem Stream. Dann ist der Server fertig (hat alle Bytes in den Stream geschrieben) und der Client wartet noch immer auf die letzten paar Bytes.

Keine Ahnung wieso...

Der Code sieht folgendermaßen aus:

Server:
Code:
System.out.println("Download request für "+dir.getAbsoluteFile()+fsdelim+ubef);
File dl=new File(dir.getAbsoluteFile()+fsdelim+ubef);
FileInputStream fis=new FileInputStream(dl);
                                                                                        
byte b[]=new byte[1024*1024];
int n;
                        
ps.println(dir.getAbsoluteFile()+fsdelim+ubef);
                        
try{
  long sum=0;
  while(sum<dl.length() && (n=fis.read(b))!=-1) {
    os.write(b,0,n);                                
    os.flush();
    sum+=n;
    System.out.println(sum+" Bytes gesendet!");                                
  }
  System.out.println(sum+" von "+dl.length()+" Bytes gesendet!");
} catch(IOException e){
  System.out.println("-- IOException beim Kopieren --");
}
os.flush();
System.out.println("Download beendet!");

Client:
Code:
System.out.println(inServ.readLine()+" nach "+target);
                                
                                byte b[]=new byte[1024*1024];
                                int n;
                                
                                try{
                                    int i=0;
                                    long sum=0;
                                    long soll=(((Satz)saetze[datei-1]).getSize());  //Dateigröße die mir Server angibt
                                    while(sum<soll&&(n=is.read(b))!=-1) {
                                        i++;
                                        fos.write(b,0,n);
                                        sum+=n;
                                        if(i%1000==0) {
                                            double proz=((double)sum)/((double)soll);                                            
                                            System.out.println(i+"KB downloaded..."+Math.round(proz*100)+"%");                                            
                                        }
                                        System.out.println(sum+"/"+soll);
                                    }                                    
                                    fos.close();
                                    System.out.println(sum+" bytes downloaded...100%");
                                } catch(IOException e){
                                    System.out.println("-- IOException beim Kopieren --");
                                    e.printStackTrace();
                                }
                                
                                System.out.print("Download beendet!\n> ");

Die Angabe im if(i%1000... stimmt nimmer weil ich die Bytefeldgröße mitlerweile geändert hab. Habs vorher mit 1024 gehabt und jetzt eben mit 1024 * 1024 probiert.

Der Server gibt System.out.println(sum+" von "+dl.length()+" Bytes gesendet!"); das richtig aus also muss er alles in den Stream schreiben aber anscheinend kommt nicht alles beim Client an?!? Gibts das dass ich da Bytes verliere? Aber TCP dürfte das doch nicht zulassen oder?

Also bitte seid so gut und helft mir,

lg ga
 

daneelolivaw

Mitglied
Danke für die Antwort.

Ich bin ja sicher, dass der Server alles sendet! Am Localhost funktionierts ja auch.

Wo kann da der Hund begraben sein?

PS: Hab mich solange nicht gemeldet, weil ich für eine Prüfung lernen musste und für mein privates Programmiervergnügen keine Zeit hatte.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
flashfactor Dateien im Netzwerk kopieren Netzwerkprogrammierung 2
B Zip Dateien über FTP laden Netzwerkprogrammierung 2
T MP3 Dateien Stream Netzwerkprogrammierung 3
I Kleine Dateien senden Netzwerkprogrammierung 3
J Socket Dateien über Socket auf Server speichern Netzwerkprogrammierung 3
F HTTP HTTP-Download: Dateien in einem Verzeichnis ermitteln Netzwerkprogrammierung 8
D Aus einer URL die Dateien lesen Netzwerkprogrammierung 5
D HTTP Checksumme von Dateien abfragen Netzwerkprogrammierung 2
Semox HTTP Webserver: Externe Dateien werden nicht verwendet. Netzwerkprogrammierung 10
Weltall 7 HTTP Dateien an PHP-Skript senden Netzwerkprogrammierung 11
M Dateien über TCP/IP senden Netzwerkprogrammierung 18
R Mehrere Dateien über einen Socket senden Netzwerkprogrammierung 2
J Mit der File Api Dateien von anderen Rechnern lesen ? Netzwerkprogrammierung 3
V Problem beim Senden von Dateien Netzwerkprogrammierung 4
E Upload großer Dateien? Netzwerkprogrammierung 5
J Java Programm für Upload von Dateien per HTTP Netzwerkprogrammierung 7
M dateien übertragen, probleme mit versch. Strömen? Netzwerkprogrammierung 4
V Dateien Auflisten Netzwerkprogrammierung 3
G Probleme mit Firewall beim empfangen von dateien über socket Netzwerkprogrammierung 6
I Dateien schnell/synchron senden Netzwerkprogrammierung 2
S Dateien versenden Netzwerkprogrammierung 16
C Dateien über Sockets versenden? Netzwerkprogrammierung 10
S Dateien auf einem HTTP Server Netzwerkprogrammierung 2
N *.* Dateien versenden im Lan Netzwerkprogrammierung 5
O Dateien von einem Server laden Netzwerkprogrammierung 3
T Dateien wia P2P Connection versenden Netzwerkprogrammierung 2
W Server schickt Dateien jede 3 Sekonden Netzwerkprogrammierung 3
C Verzeichnisstrukturen & Dateien über Socketverb. übertra Netzwerkprogrammierung 12
A FileSend - Dateien verschicken Netzwerkprogrammierung 19
P HTTP Bild von einem Server per http kopieren Netzwerkprogrammierung 1
T Textdatei in bestimmtes Verzeichnes auf anderen Pc kopieren Netzwerkprogrammierung 4
L Verzeichnisse mit Inhalt nach SMB-Share kopieren Netzwerkprogrammierung 16
W Datei automatisiert kopieren! Netzwerkprogrammierung 5
V Datensätze zwischen verschiedenen Datenbanken kopieren Netzwerkprogrammierung 2
N Englische Lautschrift kopieren Netzwerkprogrammierung 2
T Pfadangabe beim kopieren übers Netzwerk Netzwerkprogrammierung 5
L RMI-Objekt zwischen zwei RMI-Servern kopieren Netzwerkprogrammierung 2
J Kopieren von entfernten Rechner Teil 2 Netzwerkprogrammierung 11
J Kopieren von entfernten Rechner Netzwerkprogrammierung 5
M Fehlende Bits / Bytes beim kopieren Netzwerkprogrammierung 4
G Info eines Webseites kopieren Netzwerkprogrammierung 16
P File von http-Server kopieren Netzwerkprogrammierung 5
M Datei auf Remoteserver kopieren Netzwerkprogrammierung 8
Y Anzeigen, kopieren, löschen. Netzwerkprogrammierung 3
Tobero Java serversocket nicht nur zuganglich für localhost Netzwerkprogrammierung 6
G localhost im Backend https vs. http Netzwerkprogrammierung 9
Z Socket Connection reset by peer nur per IP nicht über localhost Netzwerkprogrammierung 13
Kr0e Netty3 + Localhost Adresse, Durchsatzdrosselung ? Netzwerkprogrammierung 6
0din Connection refused bei localhost?! Netzwerkprogrammierung 7
H Server und Client-keine verbindung über den localhost Netzwerkprogrammierung 6
H ServerSocket -> Zugriff nur von localhost Netzwerkprogrammierung 6

Ähnliche Java Themen


Oben