2010-07-07 4 views
3

Quelle enveloppe c-sharp de Pcap est la plus rapide? À quelle vitesse PCap est-il comparé à l'utilisation de sockets?Performance PCap

+2

Comment utiliseriez-vous les prises de la même manière? –

+0

Vous avez une information, soit vous l'envoyez via une socket en utilisant winsock, soit vous l'envoyez directement pour lier la couche en passant le système d'exploitation en utilisant winPCap. Dans les deux cas, j'envoie des informations de mon côté à une destination spécifique. Théoriquement winPCap sonne plus vite mais je me demande simplement si la mise en œuvre ou quelque chose d'autre provoque des frais généraux qui compensent les gains du système d'exploitation contournant. – bsobaid

+0

@Jon: Il est comparable aux sockets raw, s'il utilise pcap pour capturer et filtrer les paquets non pertinents. Je pense que ses soucis d'efficacité concernent le surcoût du mécanisme de filtrage de pcap. –

Répondre

0

Je crois que Pcap.Net est plus rapide que les autres wrappers car il utilise C++/CLI wrapping au lieu de PInvoke.

En général, je n'ai jamais rencontré de problèmes de performances avec WinPcap (cela dépend aussi de la façon dont vous l'utilisez).

+0

Si je peux demander, qu'est-ce que vous utilisez pour pcap? est-ce que le réseau renifle l'échange de données entre les applications des utilisateurs? Comment trouvez-vous les performances de pcap par rapport à l'utilisation régulière du socket? – bsobaid

+0

J'utilise WinPcap pour le reniflage général des paquets. Je n'ai pas comparé WinPcap avec l'utilisation de socket régulière, mais je ne sais pas comment vous pouvez renifler des paquets qui ne sont pas destinés à l'ordinateur en utilisant des sockets réguliers. – brickner

+0

Merci, je prévois de l'utiliser pour le transfert de données d'application régulier que je fais actuellement sur socket avec l'espoir d'obtenir une latence plus faible, mais ce que j'ai lu jusqu'ici, il est seulement approprié pour le reniflage de paquets. – bsobaid

0

SharpPcap est approprié à la fois pour la capture (reniflage) et la transmission (similaire à UdpClient et TcpClient). Je l'ai utilisé dans une application pour la transmission UDP haute performance et il pourrait être modifié pour être significativement plus rapide que UdpClient (il y a des exemples d'envoi de haute performance dans la source).

+0

Pourquoi la downvote? – Pat

+2

[C#] Oui, pourquoi la downvote en effet? En tant qu'auteur de SharpPcap, la bibliothèque est passée d'être rapide à beaucoup plus rapide dans la version 4.0, grâce à l'excellent travail d'un contributeur. Les taux de traitement des paquets actuels sont TRÈS élevés. Nous avons construit un ensemble de tests de performance. Pour plus de détails sur la vitesse à laquelle vous pouvez regarder le journal git pour le projet sur sourceforge. Je me suis assuré de les inclure à chaque amélioration de performance pour la documentation. Je suis l'auteur de SharpPcap btw. –