Я пробираюсь через Сетевое программирование UNIX Том 1 Ричарда Стивенса и пытаюсь написать TCP Echo Client, который использует протокол Telnet. Я все еще на ранних стадиях и пытаюсь написать функции чтения и записи.
Я хотел бы написать его для использования мультиплексирования ввода / вывода и функции Select, потому что он должен быть мультиклиентным, и я не хочу пытаться заниматься изучением потоков C ++, пока я пытаюсь изучить Библиотека сокетов Беркли одновременно. В конце главы о мультиплексировании ввода / вывода Стивенс имеет небольшой раздел о атаках DOS, где он говорит, что метод, который я планировал использовать, уязвим для атак DOS, которые просто отправляют один байт после подключения и затем зависают. Затем он упоминает 3 возможных решения - неблокирующий ввод-вывод, многопоточность (выход) и установка таймаута для операций ввода-вывода.
У меня вопрос: есть ли другие способы избежать такой атаки? А если нет, то какой из них лучше? Я просмотрел раздел о том, как установить таймаут для операций, но это не похоже на то, что я хочу сделать. Методы, которые он предлагает для этого, выглядят довольно сложными, и я не уверен, как превратить их в то, что у меня уже есть. Я только взглянул на главу о NIO, похоже, сейчас это путь, но я хотел бы узнать, есть ли другие способы обойти это, прежде чем я потрачу еще пару часов на просмотр этой главы.
Есть идеи?