Простейшая реализация клиент-серверного консольного приложения через сокеты на с++
Добавлено: 18 сен 2022, 18:31
Мое почтение! Надобно реализовать 2 программы, собственно говоря, насколько я понимаю, одна программа это "клиент", который ждет ввода с консоли, затем обрабатывает данные и посылает их 2-й программе, которая эти данные обрабатывает и в консольку что-то тоже выводит (сервер).
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Клиент: состоит из 2-х потоков и общего буфера. Первый поток принимает строку на вход и кладет ее в тот самый буфер, затем ждет следующий ввод данных. Второй поток берет строку из буфера, зачищает этот буфер и передает эту строку серверу, а далее ждет новых данных из буфера. Взаимодействие потоков должно быть синхронизировано без помощи глобальной переменной.
Сервер: ждет данные от клиента, получив их как-то их обрабатывает (допустим, к полученной строке добавляет "Hello from server!") и продолжает ждать следующих данных.
Взаимодействие клиента и сервера надобно реализовать с помощью сокетов.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Далее, прикладываю примерный скелет программы: Знаю, что мой код явно не лучший вариант, хотелось бы увидеть человеческий вариант кода в целом по программе.
И синхронизацию между потоками, может быть, как-то по-другому реализовать, не как у меня ( а то у меня там вроде как глобальная переменная, хотя я пометил ее "static", что должно означать, что она глобальна только в рамках этого файла (насколько я понимаю), да и без задержек времени может быть, как-то...)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Клиент: состоит из 2-х потоков и общего буфера. Первый поток принимает строку на вход и кладет ее в тот самый буфер, затем ждет следующий ввод данных. Второй поток берет строку из буфера, зачищает этот буфер и передает эту строку серверу, а далее ждет новых данных из буфера. Взаимодействие потоков должно быть синхронизировано без помощи глобальной переменной.
Сервер: ждет данные от клиента, получив их как-то их обрабатывает (допустим, к полученной строке добавляет "Hello from server!") и продолжает ждать следующих данных.
Взаимодействие клиента и сервера надобно реализовать с помощью сокетов.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Далее, прикладываю примерный скелет программы: Знаю, что мой код явно не лучший вариант, хотелось бы увидеть человеческий вариант кода в целом по программе.
И синхронизацию между потоками, может быть, как-то по-другому реализовать, не как у меня ( а то у меня там вроде как глобальная переменная, хотя я пометил ее "static", что должно означать, что она глобальна только в рамках этого файла (насколько я понимаю), да и без задержек времени может быть, как-то...)