zip-files über sockets übertragen

Status
Nicht offen für weitere Antworten.
S

schäflein

Gast
Hier der Auszug des Servers:

Code:
for (int i=0; i<countGamesToDownload; i++)
				    {
				    	out.write(gamesToDownload.get(i) + ".zip\n");
				    	out.flush();
				    	filename=System.getProperty("user.dir")+"\\"+ gamesToDownload.get(i)+".zip";
				    	System.out.println("Filename: " + filename);
				    	bin = new BufferedInputStream(new FileInputStream(filename));
				    	int bytesRead = 0;
					    byte buffer[] = new byte[2048];
					    while((bytesRead =bin.read(buffer))>0)
					        bout.write(buffer, 0, bytesRead);
					    bout.flush(); 
				    	
				    }


und hier der entsprechende Auszug des Clients:

Code:
bin = new BufferedInputStream(socket.getInputStream()); 
					
					for (GameInfo gi : gamesToDownloadVec)
					{
						 filename= "C:\\Temp\\" + in.readLine();
						 System.out.println ("Filename: " + filename);
					      bout = new BufferedOutputStream(new FileOutputStream(filename));
					      int bytesRead = 0;
					      byte buffer[] = new byte[2048];
					      while((bytesRead =bin.read(buffer))>0)
					        bout.write(buffer, 0, bytesRead);
					      bout.flush(); 
					      
					      bout.close();
}

Beim zweiten Mal, wenn ich ein zip-file übertragen möchte, erhalte ich folgenden filenamen:
Filename: C:\Temp\PK
und hinter dem PK sind eben lauter sonderzeichen, die eigentlich nicht dort sein sollten, der filename enthält auch keine umlaute.

Außerdem wird nur der äußerste ordner z.B. Game1.zip gespeichert und nicht die ordner die darin sind...

Es wäre sehr nett, wenn mir jemand helfen könnte.

Falls ihr euch bei der Beschreibung nicht auskennt, oder nicht erkennt wo mein Problem is und trotzdem willig seid zu helfen, meldet euch und ich werde versuchen es anders zu erklären...

Danke schonmal!
 

Wildcard

Top Contributor
schäflein hat gesagt.:
Außerdem wird nur der äußerste ordner z.B. Game1.zip gespeichert und nicht die ordner die darin sind...
...
Falls ihr euch bei der Beschreibung nicht auskennt, oder nicht erkennt wo mein Problem is und trotzdem willig seid zu helfen, meldet euch und ich werde versuchen es anders zu erklären...
Da fängt's bei mir schon an. Was bitte meinst du damit? Ein zip ist kein 'Ordner'
 

Murray

Top Contributor
Was ist denn im Client-Fragment der Stream in? Ist da evtl. bin gemeint? Das Ergebnis sieht nämlich so aus, also würdest Du im Client den Dateinamen und danach den Dateiinhalt vom Socket lesen, während Du serverseitig ja den Dateinamen in die Standardausgabe und den Dateiinhalt auf den Socket schreibst. Es wird also im Client der Inhalt des Zip-Files bis zum ersten Zeilenendezeichen als Dateiname interpretiert.

"PK" und Sonderzeichen sind der Anfang des Dateiinhalts (sieht Dir mal die Zip-Date im Hex-Editor oder ersatzweise mit "type" vom Dos-Prompt aus an).
 
G

Guest

Gast
Wildcard hat gesagt.:
schäflein hat gesagt.:
Außerdem wird nur der äußerste ordner z.B. Game1.zip gespeichert und nicht die ordner die darin sind...
...
Falls ihr euch bei der Beschreibung nicht auskennt, oder nicht erkennt wo mein Problem is und trotzdem willig seid zu helfen, meldet euch und ich werde versuchen es anders zu erklären...
Da fängt's bei mir schon an. Was bitte meinst du damit? Ein zip ist kein 'Ordner'

Verzeihung war gestern schon ein wenig spät....

Ich hab damit folgendes gemeint:
Ich habe eine Ordner-Struktur die sieht so aus:
Game1
Picture
Sound
.....

Diesen Game1 Ordner mach i jetz zu einem zip-Archive und will das dann übertragen...

Nur am Client kommt nur Game1 an und kein Picture etc....
 
G

Guest

Gast
Murray hat gesagt.:
Was ist denn im Client-Fragment der Stream in? Ist da evtl. bin gemeint? Das Ergebnis sieht nämlich so aus, also würdest Du im Client den Dateinamen und danach den Dateiinhalt vom Socket lesen, während Du serverseitig ja den Dateinamen in die Standardausgabe und den Dateiinhalt auf den Socket schreibst. Es wird also im Client der Inhalt des Zip-Files bis zum ersten Zeilenendezeichen als Dateiname interpretiert.

"PK" und Sonderzeichen sind der Anfang des Dateiinhalts (sieht Dir mal die Zip-Date im Hex-Editor oder ersatzweise mit "type" vom Dos-Prompt aus an).


Ganz versteh ich das nicht, wieso wird der Inhalt des zip-files bis zum ersten Zeilenendezeichen als Dateiname interpretiert?

server:
Code:
out = new BufferedWriter (new OutputStreamWriter (sock.getOutputStream(),"UTF-8"));

client:
Code:
in = new BufferedReader (new InputStreamReader (socket.getInputStream(), "UTF-8"));

ich hab irgendwie ein paar verschiedene streams verwendet, is wahrscheinlich nicht optima...
 
S

schäflein

Gast
so, hab jetz beim FileInputStream nicht den filename (also String) sondern new File(filename) gewählt und jetz wird zumindest das 1. Archiv richtig übertragen...
 
G

Guest

Gast
schäflein hat gesagt.:
so, hab jetz beim FileInputStream nicht den filename (also String) sondern new File(filename) gewählt und jetz wird zumindest das 1. Archiv richtig übertragen...

war wohl nur ein glückstreffer, jetz geht es nicht mehr, obwohl ich nichts verändert habe...
 

Murray

Top Contributor
Client-Code hat gesagt.:
Code:
filename= "C:\\Temp\\" + in.readLine();

Diese Stelle hier meine ich - da wird doch der Dateiname aus dem Stream gelesen.

Auf der Server-Seite wird aber nur der Dateinhalt auf den Stream geschrieben; insofern liest der Client den Beginn des Inhalts und interpretiert diesen als String, was i.d.R. nicht klappen wird.
 
G

Guest

Gast
Murray hat gesagt.:
Client-Code hat gesagt.:
Code:
filename= "C:\\Temp\\" + in.readLine();

Diese Stelle hier meine ich - da wird doch der Dateiname aus dem Stream gelesen.

Auf der Server-Seite wird aber nur der Dateinhalt auf den Stream geschrieben; insofern liest der Client den Beginn des Inhalts und interpretiert diesen als String, was i.d.R. nicht klappen wird.

Code:
out.write(gamesToDownload.get(i) + ".zip\n");

Diese Zeile schickt den Dateinamen...

Eine Frage hätte ich noch, wenn i mittels BufferedOutputStream was schreibe, wird dann solange mit dem nächsten schreiben gewartet, bis der Client sich die Nachricht vom Socket geholt hat?

wenn ich nämlich nur eine Datei schick, dann funktioniert alles...
schicken ich aber zwei, dann is der zweite Dateiname null...[/code]
 

Murray

Top Contributor
Andererseits deutet das Verhalten eben doch darauf hin, dass hier der Anfang eines Dateiinhaltes als Dateiname interpretiert wird (denn "PK" sind eben zwei "magic bytes" am Anfang einer Zip-Datei, und danach folgen Binärdaten, die als String interpretiert eben lauter Sonderzeichen ergeben).

Möglicherweise liegt das an den verschiedenen Streams out und bout, die getrennt voneinander geflushed werden?
 
S

schaefli

Gast
habe mein problem auch in ein anderes forum gepostet, nachdem ich noch ein wenig probiert habe, und es könnte wirklich wegen den verschiedenen streams sein...aber ich habe eine andere möglichkeit gefunden, wie ich zu den dateinamen kommen ohne sie übern socket schicken zu müssen, trotzdem hat sich das problem nicht gelöst...
http://forum.java.sun.com/thread.jspa?threadID=5121673
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
x46 Socket Files per Socket verschicken Netzwerkprogrammierung 1
F Einfaches Gateway für Log-Files Netzwerkprogrammierung 1
E Files von Server laden in Applet Netzwerkprogrammierung 5
K Files versenden Netzwerkprogrammierung 5
K Tabelle im Web über Listener aufrufen Netzwerkprogrammierung 1
F Verbindung zu einem LDAP Server über Java Netzwerkprogrammierung 4
S Socket Bilder über Socket Senden Netzwerkprogrammierung 0
B Zip Dateien über FTP laden Netzwerkprogrammierung 2
x46 byte[] über BufferedReader auslesen Netzwerkprogrammierung 18
E Socket Parameter über Sockets übergeben und auslesen ! Netzwerkprogrammierung 5
L Webbasierte Anwendung - Authentifizierung über LDAP/ActiveDirectory Netzwerkprogrammierung 5
J Probleme mit Multicast über IPv6, DatagramChannel Netzwerkprogrammierung 1
S Daten über TCP/IP senden Netzwerkprogrammierung 3
T Broadcast-message über spez. Netzwerk-Schnittstelle Netzwerkprogrammierung 1
T Mikrofonaudio über Java Server an Webbrowser streamen Netzwerkprogrammierung 13
M Erstelltes Programm über Internet Browser ausführen Netzwerkprogrammierung 26
T VPN-Verbindung über Java Netzwerkprogrammierung 4
V Einfachen Javaserver über das Internet erreichbar machen Netzwerkprogrammierung 2
J FTP Upload über Proxy funktioniert nicht Netzwerkprogrammierung 1
E Kurze Textnachrichten über einen Server von meinem Handy auf den Computer laden. Netzwerkprogrammierung 9
J FTP FTP Zugriff über Proxy Server Netzwerkprogrammierung 1
Thallius Java Application über ZScaler benutzer? Netzwerkprogrammierung 0
J Chat Server starten über GUI problem Netzwerkprogrammierung 4
V einfaches hin und her von Text über Server Netzwerkprogrammierung 2
P RMI Client Server Programm über Internet Netzwerkprogrammierung 2
antonbracke Multiuser Software über XMPP Server Netzwerkprogrammierung 1
Z Verbindung zwischen 2 Rechnern über ServerSockets nicht möglich Netzwerkprogrammierung 3
cezary Socket ServerSocket starten über GUIIm unterstehenden Code versuche Netzwerkprogrammierung 6
I ASCII über serielle Schnittstelle Netzwerkprogrammierung 1
N RMI "RMI über Lan funktioniert nicht" & "RMI-Server im Lan scannen" Netzwerkprogrammierung 13
L Mit Java über PHP in MySQL anmelden (Login script) Netzwerkprogrammierung 3
M Socket String Arrays über Socket an Server schicken Netzwerkprogrammierung 2
T Socket Methoden über Internet aufrufen Netzwerkprogrammierung 1
S Socket Kommunikation über Internet Netzwerkprogrammierung 1
X Problem mit vielen Bytes über Socket Netzwerkprogrammierung 23
K ByteArray über Netzwerk senden klappt nicht Netzwerkprogrammierung 5
M allgemeine Frage über Server-Client-Kommunikation Netzwerkprogrammierung 5
P RMI Threads die über RMI auf Datenbank zugreifen Netzwerkprogrammierung 2
S Datei schreiben über Applet Netzwerkprogrammierung 8
G Klassen über Netzwerk kommunizieren lassen Netzwerkprogrammierung 6
J Erster Server-Client läuft auf lokalem Rechner problemlos. Zwei Rechner über das Internet nicht Netzwerkprogrammierung 8
Kjubert Synchronisieren von Objekten über Client/Server - bester Weg? Netzwerkprogrammierung 7
S ImageIcon über Socket schicken (Serialisierung) Netzwerkprogrammierung 6
H Socket Objekte über Socket? Allgemeine Verständnisprobleme in Sachen Socket Netzwerkprogrammierung 3
S Seltsames Verhalten beim Empfangen von Daten über DataInputStream Netzwerkprogrammierung 12
A TCP über UDP Verbindung? Netzwerkprogrammierung 10
C Datei über Socket schreiben und Ereignis lesen Netzwerkprogrammierung 9
D Socket Class über Netzwerk verschicken Netzwerkprogrammierung 2
D JNLP über Webstart funktioniert nicht... Netzwerkprogrammierung 2
J Socket Dateien über Socket auf Server speichern Netzwerkprogrammierung 3
D Socket Datei nur stückweise über Socket verschicken Netzwerkprogrammierung 6
G Bild über Socket schicken - Client/Server Netzwerkprogrammierung 10
A Computer über Internet verbinden Netzwerkprogrammierung 12
N über Java in eine Text-Datei auf einem Server schreiben Netzwerkprogrammierung 2
c_sidi90 ideale Lösung, Screen Capture über Netzwerk Netzwerkprogrammierung 3
S Socket Verschiedene Exceptions beim Übertragen von Bildern über Socket Netzwerkprogrammierung 20
T ArrayList über Netzwerk senden! Netzwerkprogrammierung 5
N Problem über http eine Datei zu senden Netzwerkprogrammierung 4
T Verbindungsversuche über TCP Sockets von mehreren Threads führt zu Serverabsturz Netzwerkprogrammierung 2
V Authentifikation über mehrere Server? Netzwerkprogrammierung 3
C Verbindung zu einem Hostrechner über das Internet herstellen Netzwerkprogrammierung 15
M Map über Webservice übertragen Netzwerkprogrammierung 3
D Mehrere Clients über Java-Sockets Netzwerkprogrammierung 13
P Socket Verbindung über das Internet Netzwerkprogrammierung 2
Z Socket Connection reset by peer nur per IP nicht über localhost Netzwerkprogrammierung 13
ruffio1978 Telnet über ein socket ansprechen Netzwerkprogrammierung 8
F Socket Verbindungen über mehrere Server Netzwerkprogrammierung 4
U Datei über das Netzwerk einlesen und speichern Netzwerkprogrammierung 8
G Klassen über JMX per URLClassloader laden? Netzwerkprogrammierung 2
E Zwei PCs über das Internet miteinander verbinden? Netzwerkprogrammierung 3
E Socketverbindung über das Internet - Timeout? Netzwerkprogrammierung 28
M Socket Bilder über das Netzwerk übertragen Netzwerkprogrammierung 4
E Java über Socket ins Internet? Netzwerkprogrammierung 4
F Socket Daten über verschiedene IP's schicken Netzwerkprogrammierung 5
M Socket JavaProg über einen Clienten steuern Netzwerkprogrammierung 5
M Mail über Exchange versenden Netzwerkprogrammierung 13
F C/S über HTTPS Netzwerkprogrammierung 2
D ...class.getResourceAsStream("/meine.properties") funktioniert nicht über RMI? Netzwerkprogrammierung 3
M ganymed-ssh2.har: ftp-Verbindung über ftp-Proxy Netzwerkprogrammierung 2
J Probleme bei RSA mit byte[] bei Versand über RMI Netzwerkprogrammierung 2
Z File über Socket lesen Netzwerkprogrammierung 3
A HTTP Binärdaten über PHP-Skript in Datenbank schreiben bzw auslesen Netzwerkprogrammierung 2
M Objekt über Object-Stream, empfange "alte" Daten Netzwerkprogrammierung 2
P FTP isFile() über FTP Netzwerkprogrammierung 3
I Socket HTTP Nachrichten über Sockets verschicken Netzwerkprogrammierung 2
N String als byte Array über Socket versenden Netzwerkprogrammierung 8
M Objekt über socket senden/empfangen Netzwerkprogrammierung 3
N Socket File über Socket vom Server an Client versenden Netzwerkprogrammierung 15
P Socket Problem mit Netzwerkverbindung über TCP Netzwerkprogrammierung 12
A UCP Connection über Proxy möglich? Netzwerkprogrammierung 7
V Verbindung zweier Rechner über das Internet mit Sockets Netzwerkprogrammierung 8
F Char über Netzwerk senden Netzwerkprogrammierung 6
S HTTP Login mit CAS Authentisierung über SSL Netzwerkprogrammierung 2
C Befehle über ein GUI an Server senden Netzwerkprogrammierung 15
M Socket Datei über Socket versenden Netzwerkprogrammierung 5
I Objekte über das Netzwerk Netzwerkprogrammierung 5
M Google Translate über Java ansprechen? Netzwerkprogrammierung 13
F Socket ImageIcon über Socket --> Fehler Netzwerkprogrammierung 14
N Datenaustausch zwischen Java-GUI und PHP-Programm über SOAP Netzwerkprogrammierung 19
L RMI Informationen über die Clients herausfinden Netzwerkprogrammierung 5

Ähnliche Java Themen

Neue Themen


Oben