2010-08-23 3 views
4

J'utilise la classe TcpListener en C# pour ouvrir de nouvelles connexions tcp. Je vois des problèmes de performances et je veux voir si cela est dû à la surcharge du backlog tcp. Y a-t-il un moyen de vérifier la taille actuelle de l'arriéré pour mon processus?Comment surveillez-vous la taille du backlog de TcpListener?

+0

S'il vous plaît préciser quel type de problèmes de performances que vous voyez. Fréquemment, la limite de backlog est spécifiée lors de l'appel système 'listen', puis ignorée par le noyau. :-) Un grand retard ne devrait pas affecter vos performances. Un backlog court avec beaucoup de connexions entrantes étant ignoré ralentirait la vitesse de connexion apparente une fois que le backlog s'efface et que le client attend pour retransmettre le SYN initial. Pour répondre à votre question explicite, je ne connais aucun moyen de vérifier directement la taille de la file d'attente de backlog. –

+0

avez-vous trouvé une réponse .... intéressée! comme je semble courir dans les limites – Seabizkit

Répondre

0

Vous pouvez utiliser un utilitaire comme Wireshark (graphique, mais pas scriptable à partir de C#, AFAIK). Wireshare utilise une bibliothèque appelée WinPcap, qui effectue la surveillance réelle des flux TCP sur l'ordinateur. Le décodage des en-têtes HTTP devra être fait dans votre application (c'est ce que wireshark/tcpdump/windump devrait être capable de faire). Vous devrez utiliser PInvoke pour appeler la DLL WinPcap. Vous pouvez trouver des wrappers de bibliothèque en effectuant une recherche Web pour "WinPcap PInvoke".

Ce son question très semblable à ce qui suit:

Is there any way in .NET to programmatically listen to HTTP traffic?

En outre, Capturing HTTP requests peut aider

Questions connexes