#c
#c
Вопрос:
я пишу код tcp-сервера для мониторинга трафика tcp / ip, поступающего в мою систему. Может ли кто-нибудь иметь представление о том, как привязываться к разным портам tcp вместо одного порта. или кто-нибудь может подсказать, как это сделать?
ожидаю идей от всех добрых сердец
Комментарии:
1. Конечно — создайте несколько сокетов, и
bind
каждый к другому порту. Если вам нужна дополнительная информация, вам придется быть более конкретным.2. Привет, Вубл …. спасибо за ответ ……. да, я так и сделаю be……..my требование заключается в том, что я хочу разработать код сниффера для отслеживания трафика tcp / ip, например, wireshark …. но я не знаю, как отслеживать все порты .. поскольку существует так много портов tcp / ip…..
Ответ №1:
Взгляните на libpcap, это ближе к тому, что, похоже, вам нужно.
Ответ №2:
Для каждого порта, который вы прослушиваете, вам нужно подготовить структуры данных, необходимые для привязки к этому порту и прослушивания на нем. Вы не можете прослушивать ВСЕ порты — если только вы не работаете на уровне драйвера и не перехватываете пакеты до того, как они будут отправлены приложению, прослушивающему порт. Таким образом, эффективно, если хотите, внутри вашего приложения вы запустите несколько серверов — по одному на каждый порт — но как только вы установили клиентское соединение, вы можете использовать один и тот же код для всех запросов, поступающих на все порты (которые вы прослушиваете).
Комментарии:
1. Привет, Лив ….. спасибо за ответ ……. да, я не знаком с драйвером устройства …. но, как вы сказали, необходимо ли программировать драйвер для прослушивания портов ethernet….
2. Да, это так, поскольку только ядро имеет доступ к пакету до того, как он будет отправлен по его внутренним структурам / путям, чтобы добраться до приложения, прослушивающего его. (Кроме того, часть этой внутриядерной маршрутизации может включать проверки безопасности — например, брандмауэр — и пакет может быть отброшен.)
Ответ №3:
Вам нужно будет создать один сокет для каждого порта, который вы хотите привязать. Но как это поможет вам «отслеживать трафик tcp / ip, поступающий в вашу систему», я не уверен. Вероятно, этого не произойдет.
Комментарии:
1. Привет, Джон …. спасибо за ответ ….. но как создать сокет для всех портов … поскольку существует так много tcp-портов?
2. Да, вы на неверном пути. Рассмотрите libpcap, как предложил regularfry.