Datei über TCP-IP versenden, Dateinamen entschlüsseln?

DrMueller

Erfahrenes Mitglied
Hallo Leute,

evtl. habt ihr da grad eine einfache Lösung: Senden tue ich eine Datei, indem ich die Datei in einen ByteArray umwandle:

Code:
        public void SendFile(string fileName)
        {
            TcpClient client = new TcpClient();
            client.Connect(serverEndPoint);

            NetworkStream clientStream = client.GetStream();
            Byte[] bytes = File.ReadAllBytes(fileName);

            clientStream.Write(bytes, 0, bytes.Length);
            clientStream.Flush();
            clientStream.Dispose();
        }

Aber auch hier gibts schon ein Problem: Text-Files etc. funktionieren, aber andere Formate, z.B. PNG, gehen nicht.

Ich kann zwar dann die Datei weder mit File.WriteAllBytes wiederherstellen, aber dann kann ich ja nicht wissen, welchen Dateityp und Namen die Datei hatte.
Ich hab im Internet einiges gefunden, allerdings wird dort immer der Name vorgegeben, es gibt da sicher eine richtige Lösung.


Wie immer vielen Dank

Müller Matthias
 
Du musst den Dateinamen ebenfalls an den Empfänger senden. Entweder baust du dazu eine zweite Verbindung auf, oder du überlegst dir ein Protokoll, mit dem der empfangener den Dateinamen vom Dateiinhalt unterscheiden kann (z.B. könntest du festlegen, dass die ersten x Byte ein Integer sind, dessen Wert dann Auskunft über die Anzahl nachfolgender Bytes gibt, die wiederum den Dateinamen angeben. Und alle restlichen Bytes sind Dateiinhalt.)
 
Zurück