![]() |
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] |
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 |
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: |
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? |
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. |
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. |
Re: mögliche Geschwindigkeit
Mit dem Speed Code von mir hier
![]() Damit habe ich leider festellen müssen das mein Netzwerk nur 5 mbit hat :-( |
Re: mögliche Geschwindigkeit
5 mbit ??
1 10 100 1000 gibts ja.. aber 5 als LAN ?? |
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 ? :-) |
Re: mögliche Geschwindigkeit
Zitat:
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.. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:06 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