CodeS-SourceS
Rechercher un code, un tuto, une réponse

Traçage réseau

Juin 2017


Introduction


Lorsque vous développez des applications client/server (sockets), il n'est pas toujours évident de savoir si c'est le client ou le serveur qui n'a pas envoyé les bonnes données. .NET permet de tracer les échanges.

Note: je travaille sous VS2005 en C#

Tutoriel


Pour activer le traçage réseau, afin de "pister" les échanges entre un serveur et un client vous devez :


1° activer dans le menu "Générer" de la page "propriétés" de votre application les constantes DEBUG & TRACE

2° Ajouter le code suivant dans votre fichier app.config

<configuration>
    .....
    .....
    <system.diagnostics>
        <sources>
            <source name="System.Net">
                <listeners>
                    <add name="System.Net"/>
                </listeners>
            </source>
            <source name="System.Net.Sockets ">
                <listeners>
                    <add name="System.Net"/>
                listeners>
            </source>
            <source name="System.Net.Cache">
                <listeners>
                    <add name="System.Net"/>
                </listeners>
            </source>
        </sources>
        <switches>
            <add name="System.Net"value="Verbose"/>
            <add name="System.Net.Sockets"value="Verbose"/
            <add name="System.Net.Cache"value="Verbose"/>
        </switches>
        <sharedListeners>
            <add name="System.Net" type="System.Diagnostics.TextWriterTraceListener" initializeData="c:my.log"/>
        </sharedListeners>
        <traceautoflush="true"/>
    </system.diagnostics>
</configuration>


Quelques remarques :
  • Vous pouvez/devez laisser les balises existantes contenues dans <configuration></configuration>
  • Les lignes dans la balise <switches>indique les méthodes à tracer (ex : System.Net.Sockets pour les méthodes socket, TcpListner, TcpClient...)
  • les param value de la balise <switches>indique le type de trace à lister (Verbose : très explicite)</switches></switches>

Voici un exemple de log générée (on y voit clairement le contenu du message échangé ($$$DEB$$$...) :
[0460] Socket#39086322::Send()
[0460] Data from Socket#39086322::Send
24 30 30 30 38 341 43 : $$$DEB$$$00088DC
52 56 5F 48 49  43 20 : QDSRV   SRVSISC 
-43 20 20 20 37 2F 31 :   VSESISC   27/1
36 3A 30 38 38 3 8 30 : 2/2006 16:08:380
30 30 30 30 30 31   24 : 000304400000001$
E 24 24 24-               : $$FIN$$$
[0460] Exiting Socket#39086322::Send()  -> 88#88
[2784] Socket#39086322::Receive()
[2784] Exception in the Socket#39086322::Receive - Une opération non bloquante sur un socket n'a pas pu être achevée immédiatement
[2784] Exiting Socket#39086322::Receive()  -> 0#0
[1200] DNS::Resolve(localhost)


Attention : l'erreur que vous pouvez apercevoir dans ces log "System.Net.Sockets Error: 0 : [2784] Exception in the " correspond à une exception levée suite à un timeout sur la lecture (paramétrage applicatif pour l'utilisation de ma socket). Ce n'est donc pas une erreur applicative ...

Pour aller plus loin


Vous pouvez retrouver plus de précisions à http://msdn.microsoft.com/fr-fr/library/ty48b824(vs.80).aspx

Bon développement.
DT

A voir également

Publié par babe59.
Ce document intitulé «  Traçage réseau  » issu de CodeS-SourceS (codes-sources.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Ajouter un commentaire

Commentaires

Donnez votre avis
XPath : le language
Chargement d'un fichier XML dans un TreeView