begin process at 2010 03 20 07:45:04
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > MONITEUR RÉSEAU

MONITEUR RÉSEAU


 Information sur la source

Note :
9 / 10 - par 5 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :API Classé sous :moniteur, réseau, api Niveau :Initié Date de création :01/07/2006 Vu / téléchargé :6 251 / 1 641

Auteur : John Dogget

Ecrire un message privé
Commentaire sur cette source (19)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Simple moniteur réseau utilisant la Dll 'IPHLPAPI.DLL' des API microsoft.

Pour chaque interface réseau, le programme affiche :
- son nom
- son adresse MAC
- sa vitesse
- sa MTU
- le total des données envoyés et reçues
- des diagrammes des taux instantannés de transferts


 Conclusion

Le code contient un petit bug au niveau des progress-bar, je n'ai pas réussi à le démasquer, si quelqu'un le trouve, merci de me le faire savoir :)

Avec plus d'informations, il serait possible d'afficher la totalité des informations disponibles sur chaque interface, mais la documentation microsoft est mal fichu. Les devs microsofts semblent n'utiliser que des types DWORD (longword en delphi) pour les APIs, ce n'est pas genants pour les nombres, mais ils utilisent egalement ce type pour représenter ce qui seraient en fait des booleéens ou encore des types énumérés.

Pour cette raison, certains des infos propres à une interface ne sont pas exploitables avec Delphi (comprends qui pourra ce que je viens d'ecrire :p) ...
Si quelqu'un a des infos sur ce problème, je suis preneur ;)

Pour le code en lui même, j'ai essayé de mettre le maximum de commentaires possibles !
N'hesitez pas si vous avez des questions/commentaires :)

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture CHANGEUR DE FOND D'ÉCRAN
Source avec Zip Source avec une capture LISTE RÉCURSIVE D'UN SERVEUR FTP
Source avec Zip Source avec une capture NETTOYAGE AUTOMATIQUE DE NOMS DE FICHIERS
Source avec Zip Source avec une capture LIBERER DE LA MÉMOIRE POUR FIREFOX
Source avec Zip Source avec une capture JEU DE MORPION

 Sources de la même categorie

Source avec Zip NEXTGENS -> UNITÉS DE TYPES ÉVOLUÉS NOUVELLE GÉNÉRATION (DE... par f0xi
Source avec Zip Source avec une capture AUTO-COMPLÉTION D'UN CONTRÔLE DE SAISIE par Bacterius
Source avec Zip CARDS GAME SDK 1.0.0.0 par f0xi
Source avec Zip Source avec une capture TRAYICON - VOTRE ICONE DANS LA BARRE DES TACHES par Bacterius
Source avec Zip Source avec une capture WINHIDER _ CACHER UN PROGRAMME DE L'ÉCRAN ET DE LA BARRE DE ... par soldier8514

 Sources en rapport avec celle ci

Source avec Zip OBTENIR LE PROPRIÉTAIRE D'UN FICHIER (WIN32;NTFS) par ILP
Source avec Zip Source avec une capture AUTO-COMPLÉTION D'UN CONTRÔLE DE SAISIE par Bacterius
Source avec Zip Source avec une capture PACKAGE MICROSOFT par blueperfect
Source avec Zip ENVOYER UN "POST-IT" OU "PEEDY" SUR LE DOMAINE par cantador
Source avec Zip Source avec une capture DÉTECTER SI LE PC EST CONNECTÉ À UN RÉSEAU par cilmarseille

Commentaires et avis

Commentaire de fg85 le 02/07/2006 02:03:19

Peut-tu ajouter un exe à ta source ? (ou alors tu le renomme en .exe.bak par exemple) merci beaucoup.

Commentaire de Matt 261 le 02/07/2006 14:03:09

Eh bien non il ne peut pas rajouter d'exe à sa source puiqu'ils sonbt supprimés lors de l'upload.

Commentaire de DelphiLAB_COM le 02/07/2006 14:18:55

salut john
jai vu cette source quelque part : les fonctions que tu utilise sont a peu pres similaires a une bonne vielle source NETMON que je me rappelle plus ou je lai telechargee (delphi.about.com je pense) mais bon c'est une refonte d'une source existante a part que je te felicite pour les graphes ! c'est pas magique mais c'est nouveau dans la categorie ! bon courage .

Commentaire de John Dogget le 02/07/2006 14:49:48

Le code est de moi à 100%, je suis pas un plagiaire !
J'en ai même bien chi** pour comprendre la syntaxe du C++ sur MSDN :'(

Commentaire de f0xi le 02/07/2006 17:32:27 administrateur CS

if DebitDownLoad>=(Progress_Download.Max+0.5) then

... hum hum ... alors john on fatigue ?

DebitDownLoad = cardinal
TProgressBar.max = Integer

j'ai du mal a croire que +0.5 passe vus que ce ne sont pas de flottant.
sinon il faudrait faire :

if extended(DebitDownload) >= (extended(Progress_Download.Max)+0.5) then

--------------

unité de convertion, on divise les bits selons les mêmes regles que les bytes ou les octets, soit par 1024. Logique vus qu'on travail toujours sur des multiplicateurs de 2 (4, 8, 16, 32, 64, 128, 256, 512, 1024), Pour les bits on utilise un "b" minuscule pour ne pas le confondre avec le "B" majuscule de Bytes, les unités sont bits, Kb, Mb, Gb, pour les bits par secondes c'est bps, Kbps, Mbps, Gbps ... Kilo, Mega et Giga sont toujours representé par une lettre majuscule K, M ou G; Octet est definit par la lettre "o" minuscule. On travail sur des valeurs Int64 pour eviter tout debordement au dela de 4Giga.
Enfin, on oublis pas de mettre au pluriel "bit" et "octet" car il n'y en a jamais qu'un. :

const
    DVGiga : int64 = 1024*1024*1024;
    DVMega : int64 = 1024*1024;
    DVKilo : int64 = 1024;

function Convertir_Bits(Valeur : int64):string;
var Divider : int64;
    Unity   : string;
    Prec    : integer;
begin
  Prec    := 3;
  if Valeur >= DVGiga then begin
     Divider := DVGiga;
     Unity   := ' Gbps';
  end else
  if Value >= DVMega then begin
     Divider := DVMega;
     Unity   := ' Mbps';
  end else
  if Valeur >= DVKilo then begin
     Divider := DVKilo
     Unity   := ' Kbps';
  end else begin
     Divider := 1;
     Unity   := ' bps';
     Prec    := 0;
  end;
  result := format('%.*f %s',[Prec, Valeur/Divider, Unity]);
end;

function Convertir_Octets(Valeur : int64; IndiquerUnites:boolean):string;
var Divider : int64;
    Unity   : string;
    Prec    : integer;
begin
  Prec := 3;
  if Valeur >= DVGiga then begin
     Divider := DVGiga;
     Unity   := ' Go';
  end else
  if Valeur >= DVMega then begin
     Divider := DVMega;
     Unity   := ' Mo';
  end else
  if Valeur >= DVKilo then begin
     Divider := DVKilo;
     Unity   := ' Ko';
  end else begin
     Divider := 1;
     Unity   := ' octets';
     Prec    := 0;
  end;
  if IndiquerUnites then
    Result := format('%.*f %s',[Prec, Valeur/Divider, Unity])
  else
    Result := format('%.*f',[Prec, Valeur/Divider]);
end;

Commentaire de John Dogget le 02/07/2006 19:19:47

Bien vu ;)

Par contre, j'ai toujours cette erreur qui semble aléatoire avec les progress-bars (propriété TProgressBar hors limite).

J'arrive pas à trouver d'où ça viens (m'enerve !)

Commentaire de DelphiLAB_COM le 02/07/2006 21:56:59

tenerve pas dogget
jai juste remarquer une similitude
mais en tout cas c'est du beau travail
des fois le reenhancement de sources existantes avec apport de nouvelles fonctionnalités est tres bien !!!!
mais je te crois la sur parole , d'ailleurs je ne vois pas pourquoi je ne te croirait pas ; et bon courage john ...

Commentaire de John Dogget le 02/07/2006 21:59:02

C'est de pas trouver le bug qui m'enerve :p

Commentaire de elguevel le 03/07/2006 08:26:52

Déja merci pour cette publication, tu as tenu parole (voir forum).

Pour le moment je n'arrive pas executer ton projet correctement car je ne possède qu'une version Personel de delphi là, et donc pas possibilité de voir le travail que tu as fait avec tes graphs.

Si çà peut t'aidé, j'avais fait deux codes utilisant les même API que toi :

http://www.delphifr.com/codes/GESTION-TABLE-ROUTAGE-WINDOWS_38131.aspx
http://www.delphifr.com/codes/GESTION-CACHE-ARP-WINDOWS-IPHLPAPI-DLL_36352.aspx

C'est codé un peu à la sale peut etre, car la MSDN, et je te comprend sur ce point, est assez dur à décoder. Surtout quand tu as plusieurs imbrication de structures et que le code n'existe nul par ailleur.

Sinon pour convertir des tailles de fichiers au format String j'ai fait çà, et çà supporte le Téra (inutile pour le moment mais bon) :

function SizeToStr( Size : Int64 ) : string;
begin
    if Size >= $EE6B280000 then
      Result := Format('%.2f', [Size / $EE6B280000]) + ' To'
    else
    if Size >= $3D090000 then
      Result := Format('%.2f', [Size / $3D090000]) + ' Go'
    else
    if Size >= $FA000 then
      Result := Format('%.2f', [Size / $FA000]) + ' Mo'
    else
    if Size < 1024 then
      Result := IntToStr(Size) + ' oc.'
    else
      Result := Format('%.2f', [Size / 1024]) + ' Ko';
end;

Je reviendrai sur cette source peut etre plus tard.

++

Commentaire de John Dogget le 03/07/2006 17:54:22

Tes sources m'ont bien aidé au contraire ;)
Notamment sur la manière d'appeler une Dll et sur le choix de la Dll à employer ...

Commentaire de elguevel le 05/07/2006 21:32:00

Ah merci c'est gentil, par contre çà pas l'air d'emballer du monde, pas de commentaires et pas de notes. A mon avis beaucoup ne doivent rien piger au réseau c'est pour çà.

Là je vais essayer de préparer un truc sur les DLL Injéctés, on verra ce que çà donnera :-)

Aller Bon Coding et @+

Commentaire de Matt 261 le 09/07/2006 20:11:56

Détrompes toi Elguevel, j'apprecie beaucoup les sources que tu fais. Je m'en sers régulièrement.

Commentaire de jfs59 le 06/08/2006 11:35:57

interessant .. mais j'ai aussi le bug
il est reproductible en changeant d'interface et en arretant le curseur sans cliquer sur la combo

j'ai ajouté un mémo
voila les valeurs et le code que j'ai modifié


U 888900717 * 3406070582
D 310824465 * 3984211625
U 889504261 * 3405469266
D 310824465 * 3989750611

try
  if DebitDownLoad>=(Progress_Download.Max + 0.5) then
    Progress_Download.Max:=DebitDownload;
  Progress_Download.Position:=DebitDownload;
  if DebitUpload>=(Progress_Upload.Max + 0.5) then
    Progress_Upload.Max:=DebitUpload;
  Progress_Upload.Position:=DebitUpload;
  except
  memo1.lines.add('U ' + inttostr(Progress_Upload.Max) + ' * ' + inttostr(DebitUpload));
  memo1.lines.add('D ' +inttostr(Progress_Download.Max) + ' * ' + inttostr(DebitDownload));
  end;


on voit bien dans les deux cas un dépassement du range Download pourquoi ??
je sais pas trop ... mais ca doit pouvoir se trouver :o)





Commentaire de jfs59 le 06/08/2006 11:41:05

je me demande si c'est pas un probleme de signé non signé avec des valeurs négatives ?? mais peut etre je dis des conneries ..

Commentaire de John Dogget le 06/08/2006 11:46:44

"il est reproductible en changeant d'interface et en arretant le curseur sans cliquer sur la combo
"

Exactement :/

Commentaire de kaizer63 le 08/08/2007 02:09:56

J'ai aussi le meme probleme que vous, Tprogressbar Hors limites, vraiment pas moyen de corriger le probleme.

Bon travail sinon.

Commentaire de soa118 le 17/11/2007 20:29:00

Merci pour l'application!

Mais j'aurais un petit problème. Il n'est pas compatible avec Windows (Home) Server 2003.
Tu aurais une idée, comment je pourrais résoudrea ca?

Merci

Commentaire de John Dogget le 17/11/2007 22:01:32

Le programme utilise les API microsoft de windows XP.
Donc il est probable que celle-ci aient trop changer entre ces deux systèmes pour que ça reste compatible.

N'y a t'il pas sous Windows Server un mode "compatibilité" comme sous Xp ?

Commentaire de soa118 le 18/11/2007 10:40:25

Pas que je sache.

En tout cas ce qui est bizarre c'est que sous Win 2003 je me retrouve avec 2 "MS TCP Loopback interface" dans la combobox.

D'après msdn Win 2003 supporte ces fonctions.
Bizarre bizarre

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Netbios, l'addresse MAC ne se dévoile pas correctment [ par Keneda ] Salut à tous, j'utilise l'api Netbios de netapi32.dll pour récupérer l'adresse MAC d'une carte réseau, on trouve ce code facilement sur google et il s Défragmenter sous réseau avec delphi 7 [ par Faycalbob ] comment défragmenter, scanner, nétoyer un disk à distance sous delphi 7,En général commente faire ces opérations sous réseau avec delphi pour réaliser balayage réseau et adresses MAC [ par othland ] slt tlm; je vouderai récupérer les adresses MAC de tous les PCs connectés à mon réseau local...je suis vraiment bloqué!aidez moi svp! Récupérer le texte dans un static en API [ par zymoplex ] Bonjour,je me prends la tete depuis quelques temps pour recupérer le texte dans un static à partir d'une autre application, en fait je voudrais recupé dossier partagé sur réseau [ par yvessimon ] BonjourComment accèder à un dossier partagé sur un réseau interne, quand ce dossier partagé à un droit d'accès ?Est-ce possible avec opendialogue ?.En Fenêtre de selection d' un PC dans un réseau local ... [ par MAURICIO ] Salut à tous !Bem je crois que le titre est clair. Je savais faire cela mais maintenant que j' en ai besoin je ne me rapelle plus du nom de la fonctio [Question de noob] Comment on declare une API en Delphi ? [ par ratala ] Bonsoir :)Je programme depuis longtemps en VB et j'ai eu l'idée de passer au delphi.Quelqun pourrait me dire svp comment on declare une API ?Et autre API Nero? [ par abdousoft ] salutMerci d'avancement.abdelmoumene djezar transfert de fichier/répertoire par le réseau [ par aforpien ] Bonjour à tous,Je travail actuellement sur un prog qui permetterai la sauvegarde automatique d'un poste ainsi que l'envoi des données vers un serveur. jeu sur réseau [ par amenbr ] salut,je suis chargé à réaliser un jeu d'enfants (questions /reponses + affichage des scores ....) sur réseau, j'ai commencé par le coté graphique, po


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,749 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales