![]() |
ServerSocket text oder textdatei senden
Hallo liebe Community :)
Ich weis es ist ein altes Thema, aber ich habe seit längerem ein Programm was ausschließlich mit Serversockets und Clientsocket kommuniziert. Zum wechseln der Komponente ist es leider schon zu spät, das wäre ein Riesiger aufwand. Ich habe bei manchen abfragen das Problem das ich weil Serversocket nur 4096 byte sendet ich durch loops immer wieder nur Bruchteile zu schicke.. ich wollte das gerne optimieren. anfangs und normale texte schicke ich mit Socket.SendText und nun habe ich Socket.SendStream mal probiert, aber es verschickt oder empfängt trotzdem nur ein Bruchteil von dem was er sollte. gibt es eine Möglichkeit das ich ohne immer nur Bruchteile zu senden alles mit einmal auf meinem Client empfangen kann? besten dank im voraus! mfg EvilKnievel |
AW: ServerSocket text oder textdatei senden
Es wird mMn immer so sein, das Bruchstückweise gesendet wird. Du musst das halt irgendwie Buffern bis alles da ist.
|
AW: ServerSocket text oder textdatei senden
gibts da nix anderes? :pale:
|
AW: ServerSocket text oder textdatei senden
Nicht wirklich. Das Protokoll must du schon selber schreiben, damit deine Daten wieder korrekt zusammengesetzt werden.
|
AW: ServerSocket text oder textdatei senden
Zitat:
Socket und Co. kümmert sich nur um die Datenübertragung von einem "Stream", aber was da drin ist, ist den Sockets sowas von egal. (die haben sich auch garnicht darum zu kümmen) Dafür gibt es dann die nächsten Level in der Übertragungshirachie, welche sich um die Datenverwaltung kümmen. HTTP, FTP, POP3, DataSnap, REST, SOAP usw. sind auch nur "Socket"-Verbindungen, mit einem entsprechenden Protokoll drumrum. |
AW: ServerSocket text oder textdatei senden
Zitat:
Zitat:
TClientSocket arbeitet nach dem "Schau, ich hab da wieder ein paar Bytes bekommen..." - Prinzip. Im Unterschied dazu liefern Indy und Synapse die Daten in Portionen, deren Größe oder Endemarkierung man selber vorgibt. Das heisst, die Bröckchen die über den Socket angeliefert werden, werden in einem Puffer im Indy IOHandler gepuffert und erst dann an deinen Code übergeben, wenn sie vollständig empfangen wurden. Kommen keine daten, wird gewartet bis zum Timeout. Je nachdem wie stark der Code die TClientSocket Komponente mit dem speziellen Daten-Protokoll verflochten hat, kann das Austauschen gegen Indy (TIdTCPClient) natürlich schon etwas aufwendiger werden. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz