Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi mögliche Geschwindigkeit (https://www.delphipraxis.net/25965-moegliche-geschwindigkeit.html)

rabby 15. Jul 2004 16:47


mögliche Geschwindigkeit
 
hallo welt !

brauche zur messung der praktischen / realen gescwhindigkeit im netzwerk eine zuverlässige methode, welche mit einem einzigen rechner durchzuführen ist.
also der eine rechner ist selbst sowohl server, als auch client.
könnt Ihr mir bitte einen tipp hierfür geben?

danke

Ultimator 15. Jul 2004 16:49

Re: mögliche Geschwindigkeit
 
Nun ja!
Du könntest einen Stream von festglegter Größe verschicken und dann messen, wie lange es dauert, bis er durch die Leitung ist.
Dann teilst du die Größe des Streams in MB durch die Dauer in Sekunden und du hast den Speed deiner Verbindung in MB/s.

Chris1986 15. Jul 2004 16:58

Re: mögliche Geschwindigkeit
 
@ Ultimator:
an wen willst du den Stream senden, wenn nur ein PC verfügbar ist?

MfG
Christian

Ultimator 15. Jul 2004 17:00

Re: mögliche Geschwindigkeit
 
z.B. an einen FTP-Server, von dem du weißt, dass er z.B. GBit-LAN hat oder auf deinen Webserver, falls du 'ne Homepage hast.

rallex 15. Jul 2004 17:02

Re: mögliche Geschwindigkeit
 
Tach,

ein Netzwerk besteht immer aus mindestens 2 Knoten !

fiasko 15. Jul 2004 17:03

Re: mögliche Geschwindigkeit
 
Willst du die Geschwindigkeit (also Latenz) des Netzes oder seinen Durchsatz ermitteln?

rabby 15. Jul 2004 17:08

Re: mögliche Geschwindigkeit
 
irrtum...

ich sollte evt dazu sagen, wofür das ganze gebraucht wird:
wlan-netzwerk messung
es soll mittels access point und einem notebook damit möglich sein, zu prüfen ob/wie gut(/schnell) die verbindung an bestimmten orten ist.
diese messwerte werden dann auf einem plan aufgezeichnet.
damit kann man dann sein wlan netztwerk mal grob planen bzw testen.

man könnte jedoch nen simplen ftp server auf dem notebook laufen lassen und dann von dem rechner selbst die daten abholen.
wenn man dabei nicht localhost(127.0.0.1) verwendet, so müsste das ganze erst mal an den router gesendet werden, von wo man es dann auch gleich wieder abholt.

kennt Ihr eine beispielanwendung hierfür, die den transfer von ein und dem selben rechner durchführt und dabei die geschwindigkeit ermittelt?

vielen dank

rabby 15. Jul 2004 17:10

Re: mögliche Geschwindigkeit
 
@fiasko: Du hast recht ;-)
eigentlich wäre beides sinnvoll zu messen.
was bringt mir geschwindigkeit, wenn nix heil ankommt?!

fiasko 15. Jul 2004 17:18

Re: mögliche Geschwindigkeit
 
Ich will mal behaupten das ein vernünftiger IP-Stack das erkennt wenn die Daten für lokal sind und deine Idee deswegen schon ansatzweise nicht klappt.

SleepyMaster 15. Jul 2004 17:22

Re: mögliche Geschwindigkeit
 
Sende doch vom Notebook einen ping an den Access Point!

Chris1986 15. Jul 2004 18:00

Re: mögliche Geschwindigkeit
 
Eine Funktion die dir die aktuelle Übertragungsrate anzeigt ist im Tasgmanager von XP bereits eingebaut.

Strg-Alt-Entf und dann auf den Registerreiter "Netzwerk" klicken :wink:

[Edit: Tippfehler :? [/Edit]

rabby 15. Jul 2004 18:42

Re: mögliche Geschwindigkeit
 
hallo !

habs nun mit den ping befehlen an den access point gemacht.
nun wird im 1er takt mit nem timer ein ping gesendet und
mit nem indy komponent werden dann die pings mitgeloggt.
einmal pro sekunde lasse ich dann die anzahl der pings auslesen.
der wert liegt in der nähe des routers bei 80.
wenn ich mich in weiter entferne ist dieser wert komischerweise relativ konstant: 60-75
nagut... wir haben keine soo dicken wände, aber auch draußen bleibt der wert bei über 60...
liegt das an der messtechnik, oder ist das die realität?!

wie misst man normalerweise die geschwindigkeit und auch datendurchsatzrate?
denn ich hab noch nirgendwo 80 echos pro sekunde gelesen ;-)
und von ping lässt sich wohl auch schlecht auf mbit umrechnen.

danke für Eure hilfe

SleepyMaster 15. Jul 2004 19:02

Re: mögliche Geschwindigkeit
 
Kannst ja soviele Pings senden wies geht, und dann die Zahl der Pings die gesendet wurden mit der Paket-Größe multiplizieren. Dann hättest du auch einen Daten durchsatzt

400 Beiträge - Sorry für 400x unkonstruktives nerven :wink:

rabby 15. Jul 2004 19:09

Re: mögliche Geschwindigkeit
 
idee: da ich das ganze nicht in ne endlosschleife verpacken möchte, könnte ich doch einfach, sobald eine antwort auf den ersten ping zurückkam gleich den nächsten senden.
oder verfälscht das das ergebnis der geschwindigkeit?`
die datendurchsatzrate wäre damit aus dem rennen und müsste anderweitig gemessen werden.

was wär Euer alternative vorschlag zu ner langen schleife?

SleepyMaster 15. Jul 2004 19:10

Re: mögliche Geschwindigkeit
 
Ja, das würde das Ergebniss verfälschen!
Im Prinzip müsstest du, wenn du es mit pings machen wölltest, es mit Threads machen, damit die Pakete parallel gesendet werden.

SleepyMaster 15. Jul 2004 19:42

Re: mögliche Geschwindigkeit
 
En ansatz! Komm aber ned weiter und ist sehr ungenau!

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TThread = record
    ID: cardinal;
    Handle: THandle;
    Result: cardinal;
  end;

  IPAddr = DWORD;

  PICMP_ECHO_REPLY = ^ICMP_ECHO_REPLY;
  ICMP_ECHO_REPLY = packed record
    Address      : ULONG;
    Status       : ULONG;
    RoundTripTime : ULONG;
    DataSize     : WORD;
    Reserved     : WORD;
    Data         : Pointer;
  end;

  PIP_OPTION_INFORMATION = ^IP_OPTION_INFORMATION;
  IP_OPTION_INFORMATION = packed record
    Ttl        : byte;
    Tos        : byte;
    Flags      : byte;
    OptionsSize : byte;
    OptionsData : Pointer;
  end;



  function IcmpCreateFile : DWORD; stdcall; external 'icmp.dll';
  function IcmpCloseHandle(const IcmpHandle : DWORD) : longbool; stdcall; external 'icmp.dll';
  function IcmpSendEcho(const IcmpHandle : DWORD;const DestinationAddress : IPAddr;const RequestData : Pointer;const RequestSize : WORD;const RequestOptions : PIP_OPTION_INFORMATION;const ReplyBuffer : Pointer;const ReplySize : DWORD;const TimeOut : DWORD) : DWORD; stdcall; external 'icmp.dll';

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;


implementation

{$R *.dfm}

function PingThread(p:pointer):cardinal;
var
  hICMP   : DWORD;
  pierWork : PICMP_ECHO_REPLY;
  dwSize  : DWORD;
begin
  hICMP := IcmpCreateFile;
  if hICMP = INVALID_HANDLE_VALUE then exit;
  try
    dwSize  := SizeOf(ICMP_ECHO_REPLY)+8;
    pierWork := AllocMem(dwSize);
    try
      result:=IcmpSendEcho(hICMP,MAKELONG(MAKEWORD(192, 168),MAKEWORD(1, 1)),nil,0,nil,pierWork,dwSize,1000);
    finally
      FreeMem(pierWork,dwSize);
    end;
  finally
    IcmpCloseHandle(hIcmp);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i:integer;
  Threadarray: array[0..128] of TThread;
  running: boolean;
  StartTime, EndTime: DWORD;
begin
FillChar(Threadarray, sizeof(Threadarray),#0);
running:=true;
for i:=low(Threadarray) to High(Threadarray) do
  begin
  Threadarray[i].Handle:=CreateThread(nil,0,@PingThread,nil,0,Threadarray[i].ID);
  Threadarray[i].ID:=259;
  end;
StartTime:=GetTickCount;
while running do
  begin
  running:=false;
  for i:=low(Threadarray) to High(Threadarray) do
    begin
    Application.ProcessMessages;
    if Threadarray[i].ID=259 then
      begin
      GetExitCodeThread(Threadarray[i].Handle, Threadarray[i].Result);
      running:=true;
      end
    else
      CloseHandle(Threadarray[i].Handle);
    end;
  end;
EndTime:=GetTickCount;
ShowMessage(inttostr(32* (high(Threadarray)-low(Threadarray)))+' bytes in '+ inttostr(EndTime-StartTime)+' ms');
ShowMessage(inttostr((1000 div (EndTime - StartTime))* 32* (high(Threadarray)-low(Threadarray)))+' bytes in '+ inttostr(1000)+' ms');
end;

end.

Calimero 18. Jul 2004 13:41

Re: mögliche Geschwindigkeit
 
Mit dem Speed Code von mir hier

Tread mit dem Code drin

Damit habe ich leider festellen müssen das mein Netzwerk nur 5 mbit hat :-(

supermuckl 18. Jul 2004 14:01

Re: mögliche Geschwindigkeit
 
5 mbit ??

1
10
100
1000

gibts ja.. aber 5 als LAN ??

Calimero 18. Jul 2004 16:49

Re: mögliche Geschwindigkeit
 
5 mbit die wirkliche geschwindigkeit

Du hast niemals 10, 100 usw. in wirklichkeit.

z.b hab ich eine 400 mhz kiste als server im netzwerk (Windows).

wenn ich z.b von der 400 mhz möhre was kopiere habe ich nur 5 mbit

zu einen anderen client im netzwerk der 800 mhz hat habe ich z.b nur 8 mbit in wirklichkeit

wäre jetzt überall Linux drauf hätte ich natürlich 10 mbit. Obwohl ich habe fast überall 100´er Karten drin. Aber ein Netzwerk richtet sich immer nach der langsamsten Karte und die ist leider die 10 mbit Karte für Dsl)



verstanden ?

:-)

supermuckl 18. Jul 2004 16:55

Re: mögliche Geschwindigkeit
 
Zitat:

Aber ein Netzwerk richtet sich immer nach der langsamsten Karte und die ist leider die 10 mbit Karte für Dsl)
was zum teufel hast du für ein netzwerk ?
in einem geswitchten netzwerk ist es egal was die langsamste karte kann.. wenn die anderen 100mbit haben und du hast keine überlängen drin dann kannst du natürlich an die praktische übertragungsrate von 9-10 mb/sec rankommen.. da richtet sich garnix nach der langsamsten ausser natürlich du gehst über diese..

Calimero 18. Jul 2004 18:31

Re: mögliche Geschwindigkeit
 
sorry hatte ich vergessen zu erwähnen. Ich hab nur ein HUB und kein Switch. Hole mir noch ein Switch :-)

supermuckl 18. Jul 2004 18:33

Re: mögliche Geschwindigkeit
 
alles klar :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:33 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz