Forum: Netzwerke
by wicht,
30. Mär 2011
type
TForm1 = class(TForm)
private
LaengeNaechsteNutzdaten: Integer;
end;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
Info: TInfo;
Forum: Netzwerke
by wicht,
29. Mär 2011
Wie Sir Rufo schon sagte, der Client weiß immer, wieviel er gesendet hat. Dafür muss man sich nichtmal mit Sockets auskennen. Wenn du festlegst, dass zuerst immer ein Integer geschickt wird (Länge des Kommandos), muss der Server eben warten, bis 4 Byte (=SizeOf(Integer)) angekommen sind, und danach wartet er, bis das, was danach empfangen wurde, in der Länge dem Wert des zuerst übertragenen...
Forum: Netzwerke
by wicht,
29. Mär 2011
a) ist über. Warum muss der Client das wissen? Der schickt einfach ganz stumpf die Daten. Wenn er was wissen muss, ließt er einfach die Daten, die vom Server zurückkommen.
b) siehe hier, falls das die Komponente ist, die du benutzt. Damit weißt du dann, wieviel Daten schon da sind. Und wenn ReceiveLength > SizeOf(Integer) (Länge am Anfang des Pakets) oder ReceiveLength > SizeOf(Record) (Record...
Forum: Netzwerke
by wicht,
29. Mär 2011
Woher hast du das Beispiel da oben denn? Ich würde jedenfalls sagen, dass das nur in den seltensten Fällen so funktionieren kann. Versuch es doch mal nach folgendem Schema...
Client:
procedure SendeDaten;
var
Rec: TInfo;
begin
Rec.Zahl := 123;
Rec.Zahl2 := 456;