![]() |
Welche funktion übernimmt ein Buffer?
Hallo,
arbeite gerade mit den Socket-Kompos und habe dabei diese Zeile gefunden:
Delphi-Quellcode:
Meine Frage nun für was benötige ich einen Buffer und was ist das eigentlich?
ReceiveBuf(var Buffer, Size: Integer);
Könnte mir jemand ein Beispiel nennen für was ich diesen Buffer einsetzen kann? Danke für Eure Hilfe! |
Re: Welche funktion übernimmt ein Buffer?
in der Variable Buf, steht das drin, was du empfangen hast.
Du kannst den Bufer auch als String, Integer, ... auslesen. |
Re: Welche funktion übernimmt ein Buffer?
Hallo,
ehm ich verstehe nicht ganz..... Dann ist das ja das gleiche wie sendtext oder? Denn da kann ich ja dann einen String senden den ich in einen Integer umwandle, oder? Danke für die Hilfe! |
Re: Welche funktion übernimmt ein Buffer?
Hi Dragon27
du kannst mit SendBuf Records, etc. senden.. |
Re: Welche funktion übernimmt ein Buffer?
Also: Ein Buffer hat die Aufgabe, Daten zwischenzuspeichern.
Ich kann bei den WinSocks ja verschiedene Methoden zum Senden verwenden: SendString, SendInteger, SendBuffer, ect. Der Unterschied: Bei SendString und bei SendInteger sende ich genau einen String oder einen Integer, bei SendBuffer kann ich senden was ich will. Ich kann einen Record senden, eine Klasse, oder eine Banane, wenn ich in der Lage bin, diese zu digitalisieren... Sinn des Buffersendens ist die typenunabhängigkeit. Ich kann selbstdefinierte Typen schicken. Intern funktioniert das dann so, dass ich meinen Sockets sage: Hier fangen meine Daten an, und soviele Daten musst du senden. Die Sockets lesen dann diese Daten aus, und senden den Inhalt - egal was drinnensteht. Auf der empfangenden Seite muss ich aber klarerweise wissen, was ich empfange. Empfange ich einen String, einen Integer, oder einen Buffer? Im letzteren Falle muss ich dann auch noch wissen, was jetzt im Buffer drinnensteht: mein Record, meine Klasse, oder meine Banane? AFAIK funktioniert es aber nicht, einen String zu senden, und einen Buffer auszulesen. Der wird in dem Fall wahrscheinlich leer sein. |
Re: Welche funktion übernimmt ein Buffer?
Die Funktionen SendString (oder SendText) und SendIrgeneinTyp rufen intern auch die SendBuf auf -> Also kann man gleich immer SendBuf nehmen.
Beispiel:
Delphi-Quellcode:
S := 'Hallo';
SendBuf(S, Length(S)); |
Re: Welche funktion übernimmt ein Buffer?
Wie kann ich erkennen, welcher Typ mit SendBuf an mich gesendet wurde?
Ich würde nämlich gerne mehrere verschiedene Sachen versenden. Thanks //Edit ich glaub ich ![]() |
Re: Welche funktion übernimmt ein Buffer?
Zitat:
Zitat:
String ist mal grob gesagt, ein dynamisches Array. Man muss also die Größe angeben blabla:String[60]; Dann erst funktioniert es. undefiniert also: blabla:string; funktioniert es nicht, da gebe ich dir recht. |
Re: Welche funktion übernimmt ein Buffer?
Zitat:
![]() |
Re: Welche funktion übernimmt ein Buffer?
Zitat:
Delphi-Quellcode:
Als Empfangsroutine für den Server wäre sowas tödlich. Weil ihm nur ein Client was schicken kann. Andere Clienten stehen bei dieser, Empfangsfunktion des Servers aufm schlauch. Was passiert wohl wenn dein gegenüber 100kb ( mit upload von 5KB) schickt???. Dann steht deine Anwendung Server dank dem While, solange bis der Stream fertig ist.
//Ausschnitt.....
While Stream.Position<Stream.Size do begin //IDByte einlesen Stream.ReadBuffer(IDByte,SizeOf(IDByte)); if IDByte=1 then Stream.ReadBuffer(MyRecord,SizeOf(MyRecord)); if IDByte=2 then Stream.ReadBuffer(Int,SizeOf(Int)); if IDByte=3 then Stream.ReadBuffer(Str,SizeOf(Str)); end; Aber wenns dir reicht, wie es scheint, dann ist ja ok. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:00 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-2025 by Thomas Breitkreuz