Socket File über Socket vom Server an Client versenden

Nothiing___

Mitglied
Hallo

Ich möchte Files über ein Socket versenden.

Mittlerweile kann ich eine File verschicken. Dieses wird dann vom Client in eine bereits vorhandene Datei geschrieben.

Jetzt möchte ich, dass wenn ich ein File verschicke, dass der Client ein File mit gleichen Namen erstellt und dies dort hinein schreibt?

Wie gehts das?

Die Files werden byteweise mit BufferedOutputStream bzw. BufferedInputStream verschickt und empfangen.

Herzlichen Dank im Voraus.
 
Einfach:

Wenn der Server eine DAtei schicken will, dann schreibt er erstmal den Namen der Datei und die Größe in den Stream.
Der Client liest dann zuerst einen String und dann die Größe, erstellt dann iwo eine Datei mit diesem Namen und schreibt dann alle Bytes in die Datei, voila.
 
Einfach:

Wenn der Server eine DAtei schicken will, dann schreibt er erstmal den Namen der Datei und die Größe in den Stream.
Der Client liest dann zuerst einen String und dann die Größe, erstellt dann iwo eine Datei mit diesem Namen und schreibt dann alle Bytes in die Datei, voila.

Herzlichen Dank für die Antwort.
Hast du evtl ein Beispiel? kann mir nicht genau vorstellen wie das geht.
Danke
 
Du musst dir ein protokill implementieren:
zb:
Server:
Länge in bytes name
Name als bytes schicken
Länge datein in bytes
datei byteweise schicken.

Client:
Lese namenlänge.
Lese soviele bytes wie übermittelst, wandle die in String um, erstelle FileoutputStream mit dem übergebenen namen
Lese wiviele bytes datei lang ist
Lese die übermittelte anzahl von bytes, schreibe diese in en FileoutputStream
 
Wenn du nicht die Länge des Namens schicken willst, kannst du einfach den String als Bytes verschicken und ans ende Hängst du ein 0 byte, der Client Liest einfach so lange bis das 0 byte kommt.
 
Ich schreibe dies, weil ich nixt exaktes gefunden habe. Sonst hätte ich das nicht gepostet.
DANKE
Natürlich, hätte ich auch nicht anders vermutet.

Hm, vermutlich ein OSI-Layer-8 Problem in der Forensuche.

Versuche es noch mal mit einer leichten Variation der Suchbegriffe: statt "File" vielleicht "Datei" (oder Dateien). Anstatt "senden" vielleicht "versenden" oder "schicken".

Forensuche und Google scheint oft schwieriger zu sein als Javaentwicklung ;-)
 
Wenn Google iwann eine KI wird (Wenn das nicht schon der Fall ist 😛) und man Google fragen kann, warum sein Code nicht funktioniert... Dann werden die Foren untergehen 😀 .... ABER ERST DANN!!
 
Wenn Google iwann eine KI wird (Wenn das nicht schon der Fall ist 😛) und man Google fragen kann, warum sein Code nicht funktioniert... Dann werden die Foren untergehen 😀 .... ABER ERST DANN!!

Nicht ganz. Dann wird aus Frageforen das, was sie ursprünglich mal waren: Diskussionsforen.

In Diskussionsforen wurden Probleme gestellt und gemeinsam gelöst, oft auf verschiene Art und Weise, was zu weiteren (anregenden) Diskussionen geführt hat. Das aber nur für alle die, die alt genug sind das noch zu kennen und zu können. ;-)

Man würde sich eher mal auf die eigene Intelligenz (sofern vorhanden) verlassen ohne für jeden &%$§% nach der Community zu rufen und künstliche Intelligenz zu bevorzugen... just my 2 cents
 
Wenn du nicht die Länge des Namens schicken willst, kannst du einfach den String als Bytes verschicken und ans ende Hängst du ein 0 byte, der Client Liest einfach so lange bis das 0 byte kommt.

Iehh pfui und was ist wenn im namen warum auch immer nen 0byte als zeichen vorkommt?
Ich würde nie stopsymbole nehmen wenn es sich vermeiden läasst un man vorweg die länge sagen kann.
 
Eigentlich sind ja alle Zeichen unter 0x20 Steuerzeichen. Die werden recht gerne in Protokollen als Trenner von Datenfeldern verwendet. Macht das Parsen deutlich einfacher und in vielen Fällen effizienter. Solange du halt gewisse Annahmen machst wie z.B. das eine Datenfeld kein NULL Byte enthält.

EDIT: Gut, wenn man wirklich die Länge der Elemente schon kennt ist ein Trenner wirklich überflüssig. Hatte ich überlesen.
 

Zurück
Oben