2010-01-13 4 views
2

Я хочу написать программу, которая имеет 2 потока, один поток непрерывно захватывает пакеты из сети и выгружает их в буфер каждые t секунд, а другой поток непрерывно считывает этот буфер и обрабатывает это каждые t секунд .. Это можно сделать в C? или Java станет лучшим вариантом?Какой язык лучше подходит для захвата и обработки пакетов

+0

Спасибо всем! Я привык использовать потоки в java и делать захват пакетов в C, используя потоки libpcap.Can, которые будут использоваться в C с такой же легкостью, как в java? Есть ли какая-то конкретная информация в сети, которая мне помогла бы. – trinity

ответ

0

Это, конечно, может быть сделано в С.

Делать это в Java будет зависеть от того, есть ли у вас доступ к пакету захвата библиотеки для Java (предполагая, что вы имеете в виду, что вы хотите, чтобы захватить произвольные пакеты, а не только те, которые специально направлены на ваше приложение).

+0

И каждая библиотека захвата пакетов Java, о которой я знаю, на самом деле является оберткой JNI вокруг libpcap. –

+0

Нет ничего плохого в использовании обертки JNI. Я предполагаю, что будет намного проще закодировать одно и то же в java, чем в C. –

1

Ответ здесь - известный «libpcap». Используйте свой любимый язык, если для него имеется хорошая обертка libpcap.

  • C/C++, конечно, идеальный выбор, если вам это нравится, так как вам не нужна никакая обертка.
  • JNetPcap (http://jnetpcap.com/) представляет собой Java WinPcap/Libpcap обертка
  • Sharpcap (http://www.codeproject.com/KB/IP/sharppcap.aspx?msg=2472909) представляет собой С # Libpcap анализатор. Несколько раз я делал кое-что с этим.
  • ...

Так выбрать язык, проверить наличие обертки и идти дальше. Если для этого языка нет обертки, измените свой выбор или создайте свою собственную обертку

Смежные вопросы