Пример разработки простого многопоточного сетевого сервера: Часть 4. Обзор методик ввода/вывода в применении к сетевым соединениям
В этой статье мы рассмотрим сетевые взаимодействия нашей программы с другими: посмотрим, как можно организовать серверную часть соединения по протоколу TCP и познакомимся с несколькими вариантами ожидания входящих данных.
В предыдущих статьях цикла мы рассматривали некоторые стороны внутренней работы и внутреннего устройства нашего сервера. Теперь приступим к разбору сетевого взаимодействия нашей программы с другими: посмотрим, как можно организовать серверную часть соединения по протоколу TCP и познакомимся с несколькими вариантами ожидания входящих данных. Кстати, вопрос ожидания данных не так прост, как может показаться на первый взгляд, так как чем дальше (в контексте сетевой топологии) программа-клиент от нашего сервера и чем хуже канал связи с ней, тем сложнее наладить надёжное взаимодействие между программами. Задача разработчика на этом этапе – приложить максимум усилий к тому, чтобы на серверной стороне эффективно использовались все возможные средства и способы для надёжной передачи данных. Хорошая новость здесь в том, что многие задачи уже решены разработчиками TCP, однако нам нужно не похоронить толковые идеи разработчиков TCP, а использовать их на благо своего приложения.