8 Stimmen

Was ist der beste Weg, um eine Datei über ein Netzwerk mit C# zu senden?

Kann mir jemand eine Anleitung geben, wie man am besten eine Verbindung vom Client zum Server öffnet, eine Binärdatei einliest und ihren Inhalt zuverlässig über die Netzwerkverbindung sendet? Noch besser: Gibt es eine Open-Source-Bibliothek, die dies bereits tut und auf die ich mich beziehen könnte?

6voto

GEOCHET Punkte 20824

Sie sollten die binäre Serialisierung und das Senden über einen TCP-Socket in Betracht ziehen.

Gute Erklärung der verschiedenen Arten der Serialisierung:

http://www.dotnetspider.com/resources/408-XML-serialization-Binary-serialization.aspx

Gute Einführung in TCP Client/Server in C#:

http://www.codeproject.com/KB/IP/tcpclientserver.aspx

1 Stimmen

Der zweite Link stammt aus dem Jahr 2001, also aus einer Zeit, als die Frage noch neu war. Es handelt sich nicht um eine Anleitung, sondern eher um ein Codebeispiel.

2voto

typemismatch Punkte 2027

Das hängt davon ab, was Sie mit Netzwerk meinen - wenn Sie in einem lokalen Netzwerk kopieren, können Sie einfach die Dateikopiervorgänge in System.IO verwenden. Wenn Sie an entfernte Server senden wollen, mache ich das mit Webservices. Ich komprimiere Byte-Arrays und schicke sie rüber und dekomprimiere sie auf der entfernten Seite. Das Byte-Array lässt sich mit Hilfe von Streams sehr einfach auf die Festplatte zurückschreiben.

Ich weiß, einige Leute bevorzugen Base 64 Zeichenketten anstelle der byte[]. nicht sicher, ob es zählt.

1voto

Guille Punkte 63

Ich würde nicht HTTP oder FTP verwenden, für eine einzelne Datei ist es zu viel Overhead und zu viel zu programmieren, vor allem mit einem einfachen TCP-Server fast schon für Sie in C # gemacht.

1voto

Jason Olson Punkte 3556

Sockets sind vielleicht der beste Weg, wenn Sie es nur über das Netzwerk tun müssen. Wenn Sie TCP verwenden, erhalten Sie die Zuverlässigkeit der Kommunikation, müssen aber Abstriche bei der Geschwindigkeit machen. Wenn Sie eine höhere Leistung benötigen, können Sie stattdessen UDP verwenden. Der Nachteil von UDP ist jedoch, dass die Zustellung und die Reihenfolge der Pakete nicht garantiert ist, so dass Sie die gesamte Verkabelung selbst schreiben müssten.

Wenn Sie Dateien über das Web selbst übertragen müssen (programmatisch, und wenn Sie kein FTP verwenden können), dann ist ein Webdienstansatz über MTOM könnte Ihren Bedürfnissen entsprechen.

Wenn Sie auf Windows Server 2003 R2, Windows Vista oder Windows Server 2008 aufbauen und interne Netzwerkübertragungen vornehmen, besteht eine weitere Möglichkeit darin, die neue Ferndifferenzialkompression Eigenschaft. Diese Funktion eignet sich nicht nur hervorragend zur Komprimierung einer Datei, um den Netzwerkverkehr zu minimieren, sondern wird auch direkt von der DFS-Replikation verwendet. Der Nachteil (als .NET-Entwickler): Es handelt sich um eine COM+-Technologie.

0voto

Alex Fort Punkte 17757

Wie wäre es mit der Verwendung von HTTP oder FTP? Sie sind wie geschaffen für diesen Zweck.

Alex

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X