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

Когда нужно тестирование чего-либо, например сканера портов или просто тест сервера сточки зрения многопользовательской системы, то я использую select. Эту технологию в реальных проектах применять неудобно из-за наличия блокировки после вызова функции select.

При многопользовательском подключении наиболее эффективными являются события Windows. Простые средства управления соединениями с клиентами объявляются в одной процедуре, что обеспечивает максимальную производительность без блокирования вызова сетевых функций.

Еще одним фактором, влияющим на ваш выбор, является время работы с клиентом. Если клиент обменивается с сервером короткими сообщениями, то выгодно использовать события. Потоки в данном случае не применяются, потому что они требуют лишних затрат на системные ресурсы и усложняют управление входящими соединениями.

Если же клиенту поступают большие запросы (передача файлов), то события теряют преимущества, потому что пока один пользователь "скачивает" файл, все остальные будут находиться в ожидании. В данном случае необходимы потоки, которые позволят распараллелить выполнение задач и несколько клиентов смогут копировать файлы одновременно.

От того, как правильно вы выберете нужную технологию, зависит качество и скорость вашей будущей программы. Заранее рассчитайте приблизительную нагрузку на сервер и продолжительность сеанса связи, а также учтите возможность передачи больших объемов информации.

4.13.3. События Windows || Оглавление || 4.14. Опции сокета


Delphi в шутку и всерьез: что умеют хакеры



Новости за месяц

  • Январь
    2022
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс