grosse datenmengen transferieren
-
Ich möchte, wie der Title schon sagt mit meinem chat auch unter anderem größere Datenmengen transferieren können.
Bisher hab ich mit einer Fastnet Komponente gearbeitet, diese hat bei mir jedoch einen gravierenden Nachteil; ab einer größe von 40 MB stürzt das Programm mehr oder weniger ab. Der Vorteil ist jedoch hier das man gerade mal die IP's eingeben muss und dann einfach die Daten abschicken tut.
Ich wollte schon einmal versuchen daten über TServerSocket zu verschicken, das war mir aber irgendwie (wegen dem Protkoll) zu kompliziert.(Obwohl ich ein funktionierendes Protokoll für Strings entwicklt habe).
Meine eigentliche Frage;
Weis jemand wie man effizient große Datenmengen transferiern kann?
(Oder wie man die Fastnet-kompo, schneller machen kann?)
(Oder hat jemand eine gutes Beispiel für eine gut Datenübertragung über TServerSocket)Ich erwarte hoffnungsvoll eure Antworten...
-
Wie hast du sie denn über das netz verschickt? Doch wohl hoffentlich über SendStream ?
Das ertmal 1. und wenn das immer noch nichts ändert (oder du es auch schon so machst) dann stürtzt das programm nicht ab sondern befindet sich in einer schleife, die halt solange durchlaufen wird, bis alles gesendet is. Dann hilft noch multithreating um die lage zu verbessern. Aber darüber gibs hier schon mehr als genug diskusionen
-
Ich verschick die Daten eigentlich über PostIt().
Ist Sendstream schneller??
Wenn ih das jetzt mit Sendstream mache schreibt er mir das es keine Verbindung gibt, mit postit geht es aber.
-
Jetzt hab ich nur mehr Problem.
Kann mir jemand ein gute Beispiel für Fastnet-Datenübertragung zeigen?
-
Selbstverständlich
Also ich persönlich würds so machen:
Erstmal benutze ich die Komponenten Server- bzw. ClientSocket aus Internet.
Hier ein kleines Beispielprogramm
Server://das kommt halt bei der Initialisierung hin ServerSocket1->Port = 1234; //was auch immer ServerSocket1->Active = 1; //Und in die OnClientConnect kommt dann: void __fastcall TForm1::ServerSocket1ClientConnect(TObject *Sender, TCustomWinSocket *Socket) { TFileStream *mystream; mystream = new TFileStream ("C:\\myfile",fmOpenRead ); ServerSocket1->Socket->Connections[0]->SendStreamThanDrop(mystream); }
Das was der Client empfängt musst du nur noch in eine Datei schreiben und fertig is
-
Das mit dem Senden über serversocket ist nciht so lustig. Empfangen kann man streams glaub ich nur mit Receivebuffer. Das ist schon lustig, dann werden die Dateien nie vollständig übertragen, das heist ein Protokoll muss her.
Und genau das war mein größtes Problem, deswegen hab ich mich an Fastnet gewandt da die Kompo nicht wirklich ein Protokol braucht.