Индивидуальные задания к лабораторной работе "Основы использования сокетов"

Предварительные замечания к выполнению работы

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

Для сборки приложений создается makefile в котором должны присутствовать как минимум три цели для сборки: client, server, clean. Последняя цел для сборки производит очистку каталога с исходными текстами от всех уже скомпилированных файлов, оставляя только файлы с исходными текстами программы.

Серверное и клиентское приложения выполняют следующие действия:

  • Серверное приложение садится на определенный порт и ждет соединений по этому порту. Порт должен задаваться при запуске серверной части в командной строке приложения. В случае, если порт не указан – сервер должен садиться на определенный порт по умолчанию.
  • Клиентское приложение, используя аутентификацию (протокол обмена между клиентским и серверным приложением, которое позволит однозначно отделить "чужое" клиентское приложение от своего), пытается подключиться к серверному приложению по заданному в командной строке порту.
  • При удачном подключении клиентское приложение запрашивает у пользователя данные, необходимые для вычисления задания (смотри варианты ниже) и передает их для вычисления серверу, иначе клиент выводит сообщение об ошибке и закрывается;
  • Серверное приложение производит необходимые вычисления и передает результаты вычисления клиентскому приложению, после чего ждет очередного соединения. Вычиления выполняются в отдельной функции. Функция помещается в отдельный файл-библиотеку. То есть необходимо создать файл с исходными текстами расчетной функции, а также заголовочный файл с прототипом этой функции. Затем заголовочный файл подключается в основном коде сервеверной части.
  • Необходимо предусмотреть корректную обработку ошибок работы с протоколом TCP/IP и вывод на консоль диагностирующей информации с завершением работы приложения.

Варианты заданий

  1. Вводятся m и n. Вычислить k – сумму первых n цифр числа m.
  2. Вводятся m и n. Определить k – степень числа m, в записи которой впервые встречается цифра n.
  3. Вводятся m и n. Определить k – максимальное количество 0 в двоичной записи этих чисел.
  4. Вводятся m и n. Определить k – разность их НОК и НОД.
  5. Вводятся m и n. Определить k – разность наибольшего и наименьшего полного квадратов между ними.
  6. Вводятся m и n. Определить k – разность наибольшего кратного 7 и наименьшего кратного 5 меду ними.
  7. Вводятся m и n. Определить k – сумму всех нечетных кратных 7 между ними.
  8. Вводятся m и n. Определить k – следующее за n число с произведением цифр как у m.
  9. Вводятся m и n. Определить k – наибольшее с суммой цифр как у m между m n.
  10. Вводится m в шестнадцатеричной системе счисления. Определить k - количество цифр n в десятичной записи числа m.
  11. Вводится m. Определить k - количество цифр n в троичной системе счисления.
  12. Вводится m. Определить k - количество четных цифр в восьмеричной записи числа.