Клиент - часть клиент-серверного приложения, которое по умолчанию только подключается.
Сервер - только принимает подключения.
Что бы клиент мог принимать подключения, он должен быть еще и сервером. Таким образом он перестает быть чисто клиентом и становится гибридом.
Схема примерно такая:
клиент подключается к серверу
сервер передает информацию о других клиентах и закрывает соединение, ведь он больше не нужен.
клиент подключается к другим клиентам, используя информацию от сервера.
архитектурные вопросы)
Ко всем сразу, кстати?
А если клиентов в сети 1000?
на каждом компьютере по 1000 активных подключений для одной программы?
Или клиент подключается по мере необходимости?
Тогда как быть с уже закрытым клиентом на той стороне?
Лучше для общей коммуникации использовать сервер, а соединение клиент-клиент использовать для передачи больших объемов данных, например файлов.