Wie Stream auslesen?
-
Hallo!
Ich möchte eine Datei per TClientSocket an TServerSocket verschicken. Das Verschicken an sich klappt perfekt. Es kommen auch alle Daten an, allerdings weiß ich das nur weil sie ebenfalls mit ReceiveText ankommen. Um die Datei nicht zu zerstören muss ich sie aber mit ReceiveBuf annehmen und das klappt nicht.
Vorweg: fürs erste da es einfacher ist, möchte ich nur wissen wie überhaupt Streams per ReceiveBuf empfangen werden... ich speicher im folgenden Code jeden empfangenen Satz in eine neue .jpg Datei mit fortlaufendem Namen (1,2,3) ab.
TMemoryStream *SStream = new TMemoryStream; int CharsToReceive_int = Socket->ReceiveLength(); //Die Größe der empfangenen Daten BYTE *Buffer_BYTEp = new BYTE[CharsToReceive_int]; // Zwischenbuffer Socket->ReceiveBuf(Buffer_BYTEp, CharsToReceive_int); // Hier soll in den Zwischenbuffer die gesendeten Daten eingelesen werden SStream->Write(Buffer_BYTEp, CharsToReceive_int); // Hier soll der Zwischenbuffer in die SStream geschrieben werden String SaveScreen = "C:\\"; SaveScreen += ScreenINT; SaveScreen += ".jpg"; SStream->SaveToFile(SaveScreen); ScreenINT++;
Die Variable ScreenINT ist global.
Er legt jetzt um die 80-90 Dateien an was GENAU die Anzahl ist, in der er auch mit ReceiveText Daten empfängt! Das heißt also es kommt an.. irgendwo sitzt aber der Wurm.
Danke im Voraus,
MfG Darthshoot
-
Ah ich habe den Fehler.. Socket->ReceiveLength(); funktioniert nicht bei Stream. Wie kann ich sonst die nötige Buffersize ermitteln?
-
Darthshoo3 schrieb:
Wie kann ich sonst die nötige Buffersize ermitteln?
Wenn DU nicht weisst wie gross der Buffer maximal sein muss, wer soll es dann wissen?