Anonyme Pipes - sendet nicht kompletten String.

  • VB.NET
  • .NET (FX) 3.0–3.5

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    Anonyme Pipes - sendet nicht kompletten String.

    Moin! :)
    Ich möchte mit Anonyme Pipes einen beliebig(langen) String senden.
    Ich habe nun dieses Projekt.
    Wenn der String sehr kurz ist, sendet er alles ohne Fehlermeldung.
    Aber sobald der String etwas länger ist, kommt eine Fehlermeldung.
    Kann mir jemand bitte einen Tipp geben, wie man das Problem lösen kann.
    Freue mich auf Hilfe.
    BIG THX


    edit1:
    @an alle
    Ich habe es nun anders lösen können. 8o
    Anstatt den ganzen String auf einmal zu versenden.
    Habe ich diesen in kleine Stücke zerlegt und schicke es Einzeln.
    Sobald der String vollständig angekommen ist, wird mit diesem weiter gearbeitet….
    Ich habe mich nun informiert dass jeder verkleinerte String maximal 255 Zeichen haben darf.
    Wenn ich nun einen Datenpfad sende, stand im Internet das Windows einen Pfad von 255 Zeichen erlaubt, dann sollte es auch, klappen!
    Werde es aber nochmals selber testen, und hier mein Ergebnis bekannt geben.
    BIG THX
    Visual Basic.NET 8o
    MS-SQL
    8o

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Cheffboss“ ()

    Versuchs mal mit einem ​WaitForPipeDrain() bevor du die Pipe zu machst. Ich glaube die andere Seite kann nicht mehr Lesen, wenn du zu machst obwohl noch nicht alle Daten da sind.

    Das ist aber glaube ich bei Streams immer so, z.B. auch bei TCP:
    ​Wenn Sie eine verbindungsorientierte Socket verwenden, rufen Sie immer die Shutdown -Methode auf, bevor Sie Socket schließen. Dadurch wird sichergestellt, dass alle Daten an den verbundenen Socket gesendet und empfangen werden, bevor sie geschlossen werden.

    Socket.Shutdown(SocketShutdown) Methode
    Dein Puffer in der PipeServer.vb in der Methode WaitForConnectionCallBack ist zu klein. Da passen nur 255 Zeichen rein. Und alles andere wird durch den Verbindungsabbruch nach dem Lesen der 255 Zeichen/Bytes ins Datennirvana geschickt. Und dann ist eben aus die Maus.

    ##########

    Ich korrigiere: Der Puffer ist nicht zu klein (denn dann wäre die Konsequenz ihn größer zu machen, was der Anforderung der Übertragung eines beliebig langen Strings) widerspricht. Das Konstrukt ist einfach falsch. Ich würd wohl an der Stelle (erst)mal versuchen, den Stream solange wiederholt auszulesen, bis er leer ist und dann die gesammelten Daten weiterreichen.
    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“ ()