Files versenden

Status
Nicht offen für weitere Antworten.

Kerberus

Bekanntes Mitglied
Bis jetzt habe ich das Problem so gelöst, dass ich die Bytes eines Files eingelesen habe, diese in ein String geschrieben habe und den String dann durch einen Socket an einen Server geschickt habe. Der Server hat dann den String wieder in ein File geschrieben. Leider funktioniert diese Methode nur bei kleinen Datenmengen (bis zu 4kB) :)
Bei ca. 28kB wartet man schon ca. 5 Minuten.
Gibt es keine Möglichkeit ein File direkt zu verschicken?

Ich danke schon einmal für die Hilfe.
Sir MacKerberus
 

Illuvatar

Top Contributor
Um die Wartezeit wirst du nicht herumkommen, da du ja so oder so den gesamten Inhalt des Files verschicken musst.
Aber das Zwischenspeichern in einem String ist nicht nötig:
Code:
FileInputStream is = new FileInputStream (file);
OutputStream os = socket.getOutputStream();
int i;
byte[] b = new byte[1024];
while ((i = is.read (b)) > 0){
  os.write (b);
}
Und auf dem PC, wo die Daten ankommen, eben andersherum.
Das ist, denke ich, die beste Lösung.
 

Kerberus

Bekanntes Mitglied
Das Problem mit dieser Methode ist einfach, dass sie viel zu lange geht. Wenn man Files verschicken will die ein paar MB gross sind, wartet man bis ans Ende seiner Tage.
 

Freddy

Mitglied
Hier ein Stück Code aus meinem Chatserver:

Code:
String file = "filename.ext";
BufferedInputStream br = new BufferedInputStream(new FileInputStream(file), 32768);
BufferedOutputStream bos = new BufferedOutputStream(sock.getOutputStream(), 32768);
int data;
while ((data = br.read()) != -1)
    bos.write(data);
bos.close();
br.close();

Das Verwenden von Puffern bei IO in Java beschleunigt Lese- und Schreibvorgänge erheblich.[/code]
 

Kerberus

Bekanntes Mitglied
Danke für eure Antworten.
Ich habe jetzt folgenden Code geschrieben.

Senden:
Code:
Socket server = new Socket(args[1], Integer.parseInt(args[2]));
PrintWriter out = new PrintWriter(server.getOutputStream());

BufferedInputStream file = new BufferedInputStream(new FileInputStream(args[0]));

while(true)
{
 out.print(file.read());

 if(file.read() == -1)
 {
   break;
 }
}

out.flush();

Empfangen:
Code:
BufferedReader in = new BufferedReader(new InputStreamReader(intern_client.getInputStream()));
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("test.jpg"));

while(true) 
{
 int b = in.read();

 if(b == -1)
 {
   break;
  }
  out.write(b);
}

out.close();

Leider kann ich die jpg-Datei die dadurch erstellt werden soll nicht öffnen. Es muss also irgend wo noch einen Fehler in meinem Code haben.
 

Kerberus

Bekanntes Mitglied
Habe den Fehler gefunden.
Es ergibt sich jedoch schon ein nächstes Problem. Ich arbeite jetzt mit BufferedOutputStreams.
Wie kann ich einen String verschicken? Geht das überhaupt? Denn soweit ich weiss, kann man aus dem Stream nur Bytes lesen, oder?
 
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
S zip-files über sockets übertragen Netzwerkprogrammierung 11
H Socket Kann ein Socket server 2 dimensionale Arrays empfangen und versenden? Netzwerkprogrammierung 3
T E-Mail versenden. Netzwerkprogrammierung 8
L Versenden von "Bildschirm" Netzwerkprogrammierung 2
E Objekte versenden, Client-Server Netzwerkprogrammierung 25
L Email versenden mit Java funktioniert nicht, Fehlermeldungen: MessagingException & SocketException Netzwerkprogrammierung 10
precoc String Array versenden Netzwerkprogrammierung 7
B Viele verschiedene E-Mails an unterschiedliche Empfänger schnell versenden? Netzwerkprogrammierung 8
S Email via Googlemail versenden Netzwerkprogrammierung 17
M Mail über Exchange versenden Netzwerkprogrammierung 13
P Dateiennamen versenden Netzwerkprogrammierung 4
P Mit Java Javascript-Anfrage versenden Netzwerkprogrammierung 4
T Objekte im NIO unblocking mode versenden Netzwerkprogrammierung 11
N String als byte Array über Socket versenden Netzwerkprogrammierung 8
N Socket File über Socket vom Server an Client versenden Netzwerkprogrammierung 15
M Socket Datei über Socket versenden Netzwerkprogrammierung 5
C An WebDAV einen "MKCOL" Befehl versenden Netzwerkprogrammierung 4
X Versenden von Objekten braucht zu lange Netzwerkprogrammierung 5
N Technologie zum versenden von Objects Netzwerkprogrammierung 5
Kr0e Versenden von Daten übers Netzwerk Netzwerkprogrammierung 30
R Versenden einer MIME-Datei per E-Mail [solved] Netzwerkprogrammierung 5
N E-mail versenden Netzwerkprogrammierung 4
B Wie HTTP GET/POST Anfrage versenden? Netzwerkprogrammierung 7
T SWT Image versenden Netzwerkprogrammierung 2
T Einzelne Bits per Socket versenden Netzwerkprogrammierung 16
F Link erzeugen und versenden Netzwerkprogrammierung 4
O Wert versenden? Netzwerkprogrammierung 12
G Datein versenden funktioniert nicht ! Netzwerkprogrammierung 19
S Objekt Felder versenden Netzwerkprogrammierung 5
A Konflikt: Blocking und Non-Blocking bei Objekte versenden Netzwerkprogrammierung 4
O Über Socket Array versenden Netzwerkprogrammierung 5
G Bytes versenden Netzwerkprogrammierung 9
G Datei über ObjectInputStream versenden Netzwerkprogrammierung 8
B Strings versenden | Nur 1 Client Netzwerkprogrammierung 6
P Objekte über DatagramSocket versenden Netzwerkprogrammierung 12
V Kann keine DatagramPackets versenden von einem Jar Archiv Netzwerkprogrammierung 4
J Problem beim versenden von eigenen Objekten über RMI Netzwerkprogrammierung 2
S Dateien versenden Netzwerkprogrammierung 16
C Dateien über Sockets versenden? Netzwerkprogrammierung 10
F IP "versenden" Netzwerkprogrammierung 6
N *.* Dateien versenden im Lan Netzwerkprogrammierung 5
H Versenden von Objekt Netzwerkprogrammierung 2
L JavaMail: Versenden von mails funktioniert nicht Netzwerkprogrammierung 7
P Array per Socketverbindung versenden Netzwerkprogrammierung 2
O Sms versenden Netzwerkprogrammierung 5
T Dateien wia P2P Connection versenden Netzwerkprogrammierung 2
S E-Mails versenden. Netzwerkprogrammierung 10
D Bits über UDP versenden Netzwerkprogrammierung 3
M generelle Frage zum Versenden Netzwerkprogrammierung 4
T Mit JavaMail API Faxe versenden? Netzwerkprogrammierung 5

Ähnliche Java Themen


Oben