Мне нужно написать сервер, который принимает подключения от нескольких клиентских компьютеров, отслеживает подключенных клиентов и отправляет данные отдельных клиентов по мере необходимости. Иногда все клиенты могут связываться одновременно с одним и тем же сообщением, в других случаях это может быть один отдельный клиент или группа клиентов.
Поскольку мне нужно подтверждение, что клиенты получили информацию и не хотят создавать структуру ACK для соединения UDP, я решил использовать метод потоковой передачи по протоколу TCP. Однако я изо всех сил пытался понять, как поддерживать несколько соединений и поддерживать их в режиме ожидания.
Кажется, у меня есть три варианта. Используйте форк для каждого входящего соединения, чтобы создать отдельный дочерний процесс, используйте pthread_create, чтобы создать новый поток для каждого процесса, или используйте select (), чтобы ожидать всех идентификаторов открытых сокетов для соединения.
Рекомендации, как это атаковать? Я начал работать с pthreads, но поскольку производительность, скорее всего, не будет проблемой, многоядерная обработка не нужна, и, возможно, есть более простой способ.