Textdatei als stream?



  • EDIT:

    Habt Ihr villeicht ein Lösungsvorschlag, für mein Problem?

    Problemstellung:

    Ich habe eine Chatanwendung(Marke Eigenbau), und möchte gerne die TCP-Pakete abfangen(wird mit Wireshark aufgezeichnet, in einer Textdatei) und weiterverarbeiten,
    Quasi sind die TCP-Inhalte als Serverinfos zu betrachten, und ein Client [in c++] empfängt die Infos.

    Wie würdet Ihr das Problem angehen?

    Das die Methode muss nicht plattforumunabhängig sein, Windows wäre gut.



  • Hey hey,

    Verstehe momentan nur Bahnhof

    möchtest du das die Text Datei in abständen gespeichert werden soll? ect. und auch immer wieder aufrufbar ist?

    Hier ein Bespiel

    lbAusgabe= ist meine Textbox wo mein text drin steht

    Hier um den Text zu speichern! z.b.

    lbAusgabe->Items->SaveToFile("C:\\serien.txt");
    

    Hier um den Text jederzeit zu laden z.b.

    lbAusgabe->Items->LoadFromFile("C:\\serien.txt");
    

    Ebenso kannst du das alles in einem Timer einbinden usw... den Interval ändern!
    dann würde z.b dein Programm jede 6 sekunden die datei speichern...

    Hoffe habe etwas geholfen !?



  • Michi-ffm schrieb:

    Hey hey,

    Verstehe momentan nur Bahnhof

    möchtest du das die Text Datei in abständen gespeichert werden soll? ect. und auch immer wieder aufrufbar ist?

    Hier ein Bespiel

    lbAusgabe= ist meine Textbox wo mein text drin steht

    Hier um den Text zu speichern! z.b.

    lbAusgabe->Items->SaveToFile("C:\\serien.txt");
    

    Hier um den Text jederzeit zu laden z.b.

    lbAusgabe->Items->LoadFromFile("C:\\serien.txt");
    

    Ebenso kannst du das alles in einem Timer einbinden usw... den Interval ändern!
    dann würde z.b dein Programm jede 6 sekunden die datei speichern...

    Hoffe habe etwas geholfen !?

    Ja soweit, ist das schon eine große hilfe, nur wie kann ich das am performsten machen? Weil erst einlesen dann bearbeiten das ist nicht unbedingt die schnellste Variante.



  • Hallo

    Nimm std::ofstream, da kannst du eine vorhandene Datei öffnen und Daten anhängen, ohne die vorherigen auslesen zu müßen. Wenn du den Stream die ganze Laufzeit über offenhälst hast du minimalen Overhead.

    bis bald
    akari



  • akari schrieb:

    Hallo

    Nimm std::ofstream, da kannst du eine vorhandene Datei öffnen und Daten anhängen, ohne die vorherigen auslesen zu müßen. Wenn du den Stream die ganze Laufzeit über offenhälst hast du minimalen Overhead.

    bis bald
    akari

    Hey akari, würde das auch funktionieren, wenn diese Textdatei von meiner TCP Aufzeichnung als neu mit Text gefütter wird

    bsp:

    Paket1 //sekunden 1
    Paket2 // Sekunden 2

    das so fortlaufend, also die Aufzeichnung in der Textdatei wird permanten durchgeführt, und der Textdatei quasi als dran gehängt.



  • Hmm,

    jetzt verstehe ich was du meinst!

    Jedoch kann ich dir nicht helfen, aber würde mich auch sehr über eine lösung freuen.

    Da ich in meinem Programm jedesmal die Text datei hochladen muss und immer per klick speichern muss!!!

    und das Laden dauert mitlerweile sehr lange, da meine Datei jetzt schon etwas sehr groß ist!



  • Gut dann sind wir schon mal zu zweit 😃



  • Hallo

    Wie ich bereits sagte : einen std::ofstream kann man so initialisieren, das die entsprechende Datei im append-Modus geöffnet wird. Siehe auch die FAQ im C++ Forum, den Thread "Dateien und Ströme".

    bis bald
    akari



  • Der append Modus nützt ihm hier eher nichts, da der die Position beim Öffnen immer an das Ende der Datei setzt. Dies ist auch nur zum Schreiben sinnvoll.
    Evtl. würde es hier nützen sich nach dem ersten Lesen mit tellg die letzte Leseposition zu merken und die dann vor dem nächsten Lesevorgang mit seekg wieder zu setzen.
    Keine Ahnung ob das wirklich funktioniert.



  • Braunstein schrieb:

    Der append Modus nützt ihm hier eher nichts, da der die Position beim Öffnen immer an das Ende der Datei setzt. Dies ist auch nur zum Schreiben sinnvoll.
    Evtl. würde es hier nützen sich nach dem ersten Lesen mit tellg die letzte Leseposition zu merken und die dann vor dem nächsten Lesevorgang mit seekg wieder zu setzen.
    Keine Ahnung ob das wirklich funktioniert.

    Gibts dafür vielleicht ein Beispiel code auszug?


Anmelden zum Antworten