Я просто хочу слушать сетевое устройство, захватывать пакеты и записывать пакеты в фиктивный файл. Также мне нужно фильтровать пакеты при прослушивании, так что только записывайте пакеты, которые проходят фильтр. Мне нужно сделать это на .net С#. Это мои требования. Так какой я должен использовать? Очень важна высокая скорость передачи и минимальная потеря пакетов. Спасибо за чтение.
Pcap.net против Sharppcap
Ответ 1
Как автор SharpPcap я могу сказать, что вы сможете выполнять все эти операции с библиотекой. Производительность была критической целью дизайна.
Packet.Net имеет ряд пакетов, которые он может анализировать, и представляет собой библиотеку, поставляемую вместе с SharpPcap для вскрытия и генерации пакетов. Эта архитектура делает ленивую оценку везде, где это возможно, чтобы быть как можно быстрее.
Производительность сложна, особенно потому, что захват сетевых пакетов часто является задачей с более низким приоритетом для операционной системы. Чем быстрее ваше приложение обрабатывает пакет, тем больше пакетов можно обрабатывать без капель. Я смог захватить 3 МБ/с пакетов без капель. Я не пробовал это при более высоких скоростях передачи данных или написал обширные тесты для создания и сбора данных для оценки производительности. Тесты и результаты реального мира - это приветственные точки данных, которые нужно добавить к документации и веб-сайту.
Ответ 2
Вся функциональность доступна в Pcap.Net.
Pcap.Net использует С++/CLI для переноса WinPcap, который считается более эффективным, чем PInvoke.
Библиотека пакетов в Pcap.Net довольно большая, и сложные пакеты могут быть проанализированы и созданы. Это включает в себя рекурсивные слои, такие как IP over IP. Анализ каждого слоя выполняется лениво и только тогда, когда вам это нужно.
Для ваших нужд я вижу только преимущества использования Pcap.Net над SharpPcap.