Ну смотри... смотря какие объемы данных будут передаваться в обе стороны. Если обмен простыми командами и клиентов не очень много, то архитектура сервера простейшая ни каких потоков, просто на каждое новое соединение создаешь сокет и далее обрабатываешь данные, хотя обработку можешь вынести в отдельный поток. Если же объемы передаваемых данных большие и количество клиентов огого как большое, то тут уже надо будет придумывать сложную структуру сервера. И не надо ударяться сразу в такую мысль: на каждое соединение отдельный поток, это утопия. Лучше например разбить по нагрузке, к примеру на поток 10 соединений.
Расскажи для каких целей. Больше информации надо
Я думаю судя по вопросу, твои предложения излишни.
Ты предлагаешь тому, кто только что получил права купить себе спортивный болид, если утрировать
Подозреваю, что программа, это какой-нибудь чат. Разве бывают программисты, которые не писали чат?