Похоже, что вы спрашиваете: «Как мне создать простой сетевой сервис, который будет принимать запросы от клиентов и что-то делать в ответ?» Здесь есть несколько частей: как вы строите сервисную среду, как вы кодируете и декодируете запросы, как вы обрабатываете запросы и как вы все это связываете?
Похоже, у вас проблемы с первой и последней частями. Существует два основных способа организации простого сервиса: потоковый и событийный.
В подходе потока вы создаете поток для каждого входящего соединения. Этот поток читает сообщения (запросы) от этого соединения (дескриптор файла), обрабатывает их и записывает ответы. Когда соединение разрывается, поток завершается. У вас есть основной поток прослушивания, который принимает входящие соединения и создает новые потоки для обработки каждого из них.
В подходе события каждый входящий запрос становится событием. Затем у вас есть обработчики событий, которые обрабатывают эти события, отправляя ответы обратно. Важно, чтобы обработчики событий НЕ блокировались и не завершались быстро, в противном случае служба может оказаться заблокированной. В вашей программе есть главный цикл обработки событий, который ожидает входящие события (как правило, блокирует один poll
или select
вызов) и считывает и отправляет каждое событие в зависимости от ситуации.