как привязать сервер к разным портам вместо единого файлового?

#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.