AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Geschwindigkeit einer Socketverbindung herausfinden?
Thema durchsuchen
Ansicht
Themen-Optionen

Geschwindigkeit einer Socketverbindung herausfinden?

Ein Thema von magicshadow · begonnen am 2. Mai 2003 · letzter Beitrag vom 2. Mai 2003
Antwort Antwort
magicshadow

Registriert seit: 28. Apr 2003
85 Beiträge
 
#1

Geschwindigkeit einer Socketverbindung herausfinden?

  Alt 2. Mai 2003, 12:47
Hallöchen!

Gibtes eine Möglcihkeit die Geschwindigkeit einer socketverbindung heraus zu finden? Am besten wäre, wenn dies sogar mit Socketverbindungen anderer Anwendungen geht, oder Port bezogen.

Kann mir da einer helfen?
  Mit Zitat antworten Zitat
Benutzerbild von sECuRE
sECuRE

Registriert seit: 10. Apr 2003
Ort: Heidelberg
360 Beiträge
 
Delphi 7 Professional
 
#2
  Alt 2. Mai 2003, 13:26
ja, das geht. optimal ist es, wenn du zum senden einer datei(oder was auch immer du mit der verbindung vorhast) einen TFileStream benutzt.

das ganze müsste dann so ablaufen:
Delphi-Quellcode:
procedure TForm1.SocketRead(..)
var d,b:integer; s:string;
begin
// falls du deine daten nicht in dem OnRead-Event sendest, anpassen
d:=timetostr(StrToTime(GetToken(spd[0],'%',2))-StrToTime(formatDateTime('hh:mm:ss',now)));
if (d > 0) then begin
b:=filestream.size-StrToInt(GetToken(spd[0],'%',3));
// größe der datei - vorherige größe der datei (beim Empfangen von Daten)
if (d > 1) then b:=b div d;
s:='Speed: '+CalcBytes(b)+' kB/s';
// CalcBytes liefert die korrekte Größe + Einheit eines Bytewerts(als Integer) zurück, vorsicht: keine standart funktion
spd[0]:='erkennung%'+formatDateTime('hh:mm:ss',now)+'%'+inttostr(filestream.size);
end;
end;
Sobald du das Grundprinzip verstanden hast, wirst du es sicher angleichen können. Die Prozedur wurde übrigens für das Dateiempfangen geschrieben, wenn du Dateien versendest muss sie anders aussehen. spd[0] ist ein Array mit der Größe deiner Wahl, kommt darauf an wieviel Transfers du maximal gleichzeitig behandeln willst. Mit 'erkennung' meinte ich zB einen Komponentennamen, damit du den jeweiligen String auch den Socket-Komponenten zuweisen kannst, falls du diese dynamisch erstellst. Weiterhin musst du am Anfang der Prozedur den richtigen String aus dem Array wählen, damit du bei mehreren Transfers nicht immer den selben Speed anzeigst. Zu ende des transfers muss spd[x] natürlich wieder auf nil gesetzt werden..
Ich hoffe das hat geholfen..
  Mit Zitat antworten Zitat
magicshadow

Registriert seit: 28. Apr 2003
85 Beiträge
 
#3
  Alt 2. Mai 2003, 14:19
Danke, aber so wie das aussieht muß ich da die Datei selber senden lassen, nur ich nutze dazu verschiedene komponenten (hauptsächlich die TFTPServer Componente der ICS).
Kann man das noch irgendwie anders machen?

Also um's mal kurz zu fassen, ich möchte für mienen FTP Server eine speed anzeige haben, nur ich hab abselut keinen plan, wie.

[Edit]
Ich hab ne möglichkeit gefunden Wenn ich die ICS etwas umschreibe gehts! Ist zwar unschön, aber was solls

Wenn noch einer ne Möglichkeit kennt bitte einfach sagen

[/Edit]
  Mit Zitat antworten Zitat
Benutzerbild von sECuRE
sECuRE

Registriert seit: 10. Apr 2003
Ort: Heidelberg
360 Beiträge
 
Delphi 7 Professional
 
#4
  Alt 2. Mai 2003, 15:06
wenn du deine Datei mit TServerSocket.Socket.SendStream(filestream); sendest, was nur minimaler aufwand ist, lässt sich meine methode anwenden, allerdings musst du diese dann in einen Timer kapseln, da du ja die Datei nicht blockweise versendest, sondern TServerSocket das machen lässt..
  Mit Zitat antworten Zitat
magicshadow

Registriert seit: 28. Apr 2003
85 Beiträge
 
#5
  Alt 2. Mai 2003, 17:17
Jop, hab das jetzt einigermaßen raus THX!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:07 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