Я сейчас работаю над заданием по программированию.Назначение заключается в реализации клиента, сетевого эмулятора и сервера.Клиент передает пакеты эмулятору сети, а эмулятор сети передает серверу.И наоборот тоже.Обязательным условием для назначения является то, что я могу использовать только необработанные сокеты.Поэтому я создам свои собственные заголовки IP и UDP.Я проверил свои пакеты с Wireshark.Все они правильные и в правильном формате (он читает их правильно).
Другое требование состоит в том, что эмулятор, клиент и сервер имеют определенные порты, к которым они должны быть привязаны.Теперь я не понимаю, как привязать необработанный сокет к определенному порту.Все мои сырые сокеты получают весь трафик на адрес хоста, к которому они привязаны.Согласно страницам руководства, и везде в Интернете, включая «Сетевое программирование Unix» Ричарда Стивенса, именно так они и должны работать.Мой учитель не ответил ни на одно из моих электронных писем, и я, вероятно, не смогу спросить его до вторника. Я вижу два варианта передо мной.Сначала я могу использовать libpcap для фильтрации с определенного устройства, а затем вывести его в мой raw-сокет.Я чувствую, что это выход за рамки нашего задания.Или я могу отфильтровать их после того, как получу их из сокета.Это, очевидно, имеет много накладных расходов, потому что все пакеты копируются / перемещаются через ядро.По крайней мере, это мое понимание (пожалуйста, не стесняйтесь меня поправлять, если я ошибаюсь).
Итак, мой вопрос: это вариант или что-то, что я могу установить для этого?Где необработанный сокет будет привязан к порту?Я что-то упустил очевидное?
Спасибо, что уделили время.
-