Mit TCP eine Datei über mehrere MB Versenden

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von seh.

    Mit TCP eine Datei über mehrere MB Versenden

    Hallo Leute

    Ich habe eine kleine Frage. Ich habe eine kleine Server/Client Anwendung gebastelt auf Basis von dem TCP Client/Server Multiserver hier im Forum
    Multiserver (TCP)
    Natürlich is jetz meine Anwendung etwas größer geworden aber die Logik ist soweit die gleiche. Wie ich (Text-)Nachrichten versende weiss ich und ist auch garkein Problem. Jetzt möchte ich aber einige Dateien über diesen Multiserver versenden und die Dateien sind stellenweisse mehrere 100MB groß.
    Kann mir bitte einer erklären wie ich das mit dem Quellcode vom Multiserver lösen kann? Ich möchte nicht meine ganze Logik umbauen sondern auf dem Prinzip vom Multiserver aufbauen. Auch habe ich keine Ahnung wie man sowas umsetzt? Gibt es da eine einfache Methode? Leider habe ich im Forum vom Multiserver keine Idee gefunden.
    @ErfinderDesRades
    Erstmal Danke für deine Antwort. Mein Problem liegt allerdings daran das ich einfach nicht weiss wie man sowas macht? Meinen Client und Server haben ich auf der Basis von Multiserver (TCP) aufgebaut. Da wird natürlich ein "NetworkStream" verwendet. Aber da werden doch NUR "Texte" übermittelt und keine Dateien? Und da liegt irgendwo auch mein Problem mit dem Verstehen wie es nun geht?
    Mein Problem liegt auch viel mehr daran das ich die Verbindung dauerhaft aufrecht halten will und die Dateien mittendrin zwischen Server und Client versendet werden sollen/können. Der eigentliche Chat soll davon natürlich nicht betroffen sein und problemlos weiterlaufen können.
    Als Chatnachricht habe ich zb eine solche Nachricht "/Chat/global/MVN050/hi" (natürlich etwas komplexer aber das Beispiel reicht ja). Der Server schaut sich die Nachricht (also den Text?) an und macht damit weiter.
    Ich habe verstanden das ich die Datei splitten/aufteilen müsste(da diese einige 100MB gross sein können). Aber ich habe nicht verstanden "WIE" das Senden und Empfangen genau abläuft? muss ich jetzt einfach einen Teil der Datei als String umwandeln und zb so was zum Server senden? "/sendFile/Split1von1000/<hier ein Teil der Datei als String>" ? oder wie muss ich mir das vorstellen? Hast du vllt ein Beispiel wie man sowas macht? am besten auf der Basis von dem Multiserver hier Multiserver (TCP)
    Hier habe ich etwas gefunden wo jemand es macht aber so ganz verstehen ich nicht wie er rausfinden will ob es eine Datei ist oder eine andere Nachricht? Und wie finde ich dann raus ob die Datei von User A oder von User B kommt? wobei das nich schwer werden wird da ich das vom Client-Namen rausfinden sollte?
    Ich bin jetzt nicht soo der große TCP-Checker, aber weil ich gerade selber ein wenig in dem Thema stecke: laut Mikrosaft ist der NetworkStream für Daten aller Art gedacht:

    Mikrosaft schrieb:


    GetStream returns a NetworkStream that you can use to send and receive data. The NetworkStream class inherits from the Stream class, which provides a rich collection of methods and properties used to facilitate network communications.

    Was Du mit dem Stream machst, bleibt doch Dir überlassen. Ob man mithilfe des Streams dann einen StreamWriter, StringReader, TextReader, BinaryWriter oder wasauchimmer erstellt, um damit zu hantieren, ist doch offen. Letztenendes werden doch eh nur Bytes hin- und hergeschubst, die man dann passend interpretieren (lassen) muss, siehe dortiges Beispiel.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()