Уважаемые форумчане, у меня очень мало опыта в написании сетевых приложений, по этому хочу спросить - как лучше организовать TCP Сервер и Клиент?
Можно напрямую использовать ф-ии Accept, Send и Resv (конечно нужно использовать и др., но они вопросов не вызывают т.к. основной поток не блокируют. Ф-ции Accept, Send и Resv можно вынести в отдельные потоки (TThread) (там сначала Listen, потом в отдельном потоке уже Accept, когда будет запрос, создаём ещё поток, где уже Send и Resv. Однако читал, что этот метод требует много ресурсов от системы.
Можно организовать по событиям (прерываниям) Select (или WSAEventSelect). Там неск. сложнее, но суть заключается что-бы когда произойдёт событие, система об этом сообщит. И остаётся только обработать событие (вызвать Accept, Send и Resv) т.к. в буфере есть данные, то блокировки не будет. А может ещё кто какой способ предложит.
Поизучал модули Sockets, WinSocet и WinSocet2. Выяснил что модуль Sockets написан под какую-то задачу, более универсальны WinSocet и (более новый) WinSocet2, но они под Windows (а как в др. ОС?)
Модуль Sockets не позволяет некоторые вещи (или я чего-то не знаю).
Касательно моих запросов: у меня не будет подключено к одному северу много клиентов, скорее наоборот один клиент будет опрашивать много серверов. "Общаться" будут меж-собой Контролеры и SCADA по протоколу ModBus. Это не конкретная система, а компонент для написания SCADA.
У кого есть какие мысли по этому поводу???