NTttcp : Mesurer la vitesse d'un réseau

Pour mesurer la vitesse du réseau entre deux machines, il y a un outil qui existe apparemment depuis longtemps et qui ne vient pas en premier en googlisant : NTttcp. C'est un outil de Microsoft qui s'inspire de ttcp qui existait depuis très longtemps en BSD.

Cette version utilise les subtilités de Windows et de Winsock pour permettre de tester via différents modes de threading et d'affinité processeur, ainsi qu'avec divers paramétrages TCP ou UDP.

Le msi est un peu rustique : après installation dans "Program Files\Microsoft Corporation\NT Testing TCP Tool", il faut copier l'exécutable correspondant a votre plateforme dans deux variantes : NTttcps.exe (qui sera utilisé pour l'envoi) et NTttcpr.exe (qui sera utilisé pour la réception).

Ensuite, les lignes de commandes sont variables selon ce que l'on veut faire : la documentation associée (TCP_Tool.docx) est installée au même endroit.

Hook sous Vista : il faut montrer patte blanche

Je viens de tomber sur un post intéressant sur le blog de John Robbins.

Il y indique comment faire un hook installable sous Windows Vista : il faut montrer patte blanche ! Il faut faire attention à la sécurité, à l'UAC, au déployement, et au debugging. Dans l'exemple, il installe un hook demandant l'interception de tout les messages (WH_JOURNALRECORD journal recorder).

Pour rappel, les hooks (installés via SetWindowsHookEx) permettent d'intercepter des informations (frappe clavier, souris), et ce, éventuellement pour toutes les applications. C'est utilisé par les des outils de test d'interface utilisateurs (enregistrement des entrées puis ensuite, test automatique avec les mêmes entrées), de debugging (spy++) , des outils d'enregistrement de macro, mais aussi bien sûr par de méchants spywares...

En fait, la dernière fois que j'ai tenté de faire ça, c'était sous Windows 2000 et 98, alors il n'y avais pas tout ces problèmes de permission Smile. Sous XP, il n'y en a, je crois, que peu.

Mais c'est bien, ça veut dire qu'il est beaucoup plus difficile d'installer un spyware sous windows Vista avec l'UAC d'activée !

 

Vista : API pour récupérer les informations sur le réseau courant

Au vu du post de Sébastien FERRAND, cela m'a étonné qu'il n'y ait pas d'API pour faire ce qu'il souhaitait faire, et en fait il y en a une : Network List Manager.

C'est une API COM qui permet de récupérer les informations liées au centre réseau et partage : est-on connecté sur un réseau public, privé, domaine, ipv4, ipv6, etc. Elle permet aussi de lister tout les réseaux wifi, vpn, etc, auxquels on est ou a été un jour connecté.

Pour l'utiliser en .Net, il faut référencer la typelib COM "Network List Manager 1.0 Type Library" via Add Reference puis :

 

Ensuite, on peut l'utiliser via la classe NetworkListManagerClass qui possède des accesseurs et aussi des événements pour être notifié des changements.

J'ai fait un micro programme de test, et voici le genre d'information que l'on peut avoir :

(Le code est dans l'attachement de ce message au cas où quelqu'un serait intéressé, c'est sans aucune garantie et à vos risques et périls)

Et heu pour Sébastien, désolé pour le "contre blog" Smile mais c'est juste pour illustrer l'API officielle, mieux que de lire les clefs de registres Wink

 

Nommer ses threads, mais une seule fois !

Pour des besoins de diagnostic, il est parfois bien pratique de donner un nom aux threads, quand ils sont assez nombreux. Cela permet de les retrouver plus facilement dans le debuger, dans la fenêtre qui liste les threads :

liste des threads

En .Net, il existe pour cela la propriété Thread.Name à laquelle on peut assigner la valeur souhaitée, sauf qu'elle est "write-once" : on ne peut l'assigner qu'une seule fois durant la vie d'un thread !!!

Autant dire qu'elle est donc inutilisable dans les nombreux cas où un thread est réutilisé (pool de thread par exemple)... En fait, c'est en tentant de l'utiliser dans ce genre de cas que j'ai remarqué cette limitation. Il y a des pseudos justifications sur des blogs ou forums ici ou  mais bon...

En revanche, je rappelle que pour du code natif, on peut changer le nom d'un thread autant de fois que l'on souhaite via la méthode mentionnée ici, qui fonctionne depuis longtemps.

 

Un petit bonjour !

Bonjour à tous,

Tout d'abord merci à Nix pour avoir créé ce blog.

Je me présente. Je suis consultant chez Winwise depuis mi 2000. Une petite parenthèse - il y a tellement de blogs de collègues ici et ailleurs que je vous laisse les chercher (j'ai peur d'en oublier Smile). Je travaille donc essentiellement sur des technologies Microsoft depuis cette époque. J'ai d'abord travaillé sur des applications clientes et composants serveur en C++ et COM (et encore d'autres technologies mais je vais faire bref), puis, bien sûr, je suis basculé à .Net d'abord un peu puis complètement. J'ai donc eu la chance de pratiquer juste un peu le 1.0 et un peu plus mais pas trop quand même le 1.1 car il faut quand même avouer que .Net devient génialissime surtout à partir du 2.0 que j'ai par contre pratiqué dès les bêtas.

Je n'avais jusque à présent pas de blog - juste un petit site avec 2/3 articles jouant essentiellement un rôle de "pense bête" (genre j'écris une information pour être sûr de pouvoir la retrouver n'importe où Smile). Je vais essayer de bloguer ici de façon plus consistante et régulière.

Olivier.


Les 10 derniers blogs postés

- Créer un périphérique Windows To Go 10 ! par Blog de Jérémy Jeanson le 11-21-2014, 04:54

- RDV à Genève le 12 décembre pour l’évènement “SharePoint–Office 365 : des pratiques pour une meilleure productivité !” par Le blog de Patrick [MVP Office 365] le 11-19-2014, 10:40

- [IIS] Erreurs web personnalisées par Blog de Jérémy Jeanson le 11-19-2014, 00:00

- BDD/TDD + Javascript par Fathi Bellahcene le 11-16-2014, 16:57

- Sécuriser sans stocker de mots de passe par Blog de Jérémy Jeanson le 11-15-2014, 08:58

- Où télécharger la preview de Visual Studio 2015 ? par Blog de Jérémy Jeanson le 11-13-2014, 21:33

- Les cartes sont partout ! par Le blog de Patrick [MVP Office 365] le 11-13-2014, 17:26

- [ #Office365 ] Courrier basse priorité ! par Le blog de Patrick [MVP Office 365] le 11-12-2014, 08:56

- [Oracle] Fichier oranfsodm12.dll absent du package client par Blog de Jérémy Jeanson le 11-10-2014, 20:44

- [ #Office365 ] Le chapitre 1 des Groupes est écrit, et alors ? par Le blog de Patrick [MVP Office 365] le 11-10-2014, 20:23