Hallo,
Ich habe vor ein Netzwerk-Benchmark Programm zu schreiben. Ich benutze dafür den Server- und Client-Socket.
Ich habe mir gedacht, dass ich eine Variable anlege, un diese immer wieder sende.
Jetzt meine erste Frage: Die Variable sollte von der Größe her variabel sein, also wollte ich einen String (sentvar) nehmen:
Delphi-Quellcode:
SetLength(sentvar,1024);
size:=SizeOf(sentvar); //size=4
Bin ich jetzt doof, oder warum ist ein String mit der Länge 1024, der eine Zeichenkette ist, bei dem ein Zeichen 1 Byte hat, nur 4 Byte groß?
Mein zweites Problem: Ich jage die eher die Prozessorauslastung hoch, anstatt der Netzwekrauslastung.
Delphi-Quellcode:
var sentvar : array [1..1024] of char; //damit ist sentvar 1024 Bytes groß! ist der Array dynamisch ist er wieder nur 4 Byte groß!
procedure TForm1.Button3Click(Sender: TObject);
var Socket: TCustomWinSocket;
i,j : integer;
size : integer;
begin
//SetLength(sentvar,1024);
size:=SizeOf(sentvar);
if ClientSocket1.active=true then
begin
for i:=1 to 1048576 do
begin
Clientsocket1.Socket.SendBuf(sentvar,size);
end;
end;
end;
procedure TForm1.Read(Sender: TObject; Socket: TCustomWinSocket);
begin
bytes:=bytes+Socket.ReceiveLength;
Socket.ReceiveBuf(sentvar,Socket.ReceiveLength);
Label5.Caption:=InttoStr(bytes);
end;
Ausserdem habe ich nicht das Gefühl, dass alles an Bytes am Zeil ankommt...
Genieße jede Minute deines Lebens, denn sie wird nicht wieder kommen.