Исходя из вопросов, которые вы задавали, я думаю, вы должны попробовать такую среду, как EventMachine, и написать сервер, который реализует то, что вы хотите, вместо того, чтобы пытаться возиться с написанием серверной оболочки.
При этом наиболее эффективным способом чтения из сокета является использование правильного вызова select и опрос всех открытых соединений. Хотя это довольно академично для тех, кто раньше разрабатывал клиент-серверные приложения, это неприятно, потому что есть много вещей, которые вы легко можете ошибиться. Например. обработка нескольких соединений может привести к всевозможным неприятным ситуациям, если вы не особенно осторожны, чтобы избежать блокировки вызовов.
Среда EventMachine позволяет легко разрабатывать серверы типа запрос / ответ, потому что вы всегда можете начать с шаблона и работать с него, например, встроенный EventMachine :: Protocols :: LineAndTextProtocol один служит отличной основой. для большинства.