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