Крайне банальная реализация клиент-серверного взаимодействия на C

Давайте представим следующую задачу. Есть протокол  TCP, и пусть наш клиент будет запрашивать у сервера содержимое каталогов.

Для нового соединения будем создавать новый поток, и для них (новых соединений) будем использовать заранее запущенные потоки из пула. Размер пула пускай будет фиксированный.

Клиент

Сервер (с использованием POSIX-семафоров, ибо кошер):

Алсо, переопределим макроопределение ASSERT в заголовочнике:

Если объяснять на пальцах, то получается следующая схема:

socket

 

Кстати говоря, стоит отметить, что у нас изначально один сокет открыт на прослушку соединений, а потом, при установлении нового соединения, на сервере открывается новый сокет, и так для каждого.

Компильнуть можно вот таким Makefile

Такие дела.