Цитата:
Сообщение от dafttttttt
Делаю сейчас курсовую клиент - серверная программа для тестирования студентов. Обе части с трудом накидал. И вот преподаватель (не знавши о моих отдаленных навыках в области программирования) дал задание сделать в клиентской части форму ответов не сворачиваемую. А в серверной части подтверждение правильности введенных данных. Как он объяснил - учитель может отклонить подключившегося студента если тот ввел (кривые данные)
Даже нет мысли по этому поводу (как сделать).... Не подскажете?((
|
Когда-то давно писал я программу для класса обучения. Так как клиентские (ученические) компьютеры были там разношерстными, вплоть до самых дохленьких с установленными на них WinNT4 или Win98, то я чтобы сильно не заморачиваться реализовал общение сервера с клиентами самым по-моему простым способом - через обычные файлы. Насколько мне известно эта моя программа до сих пор работает в том компьютерном классе, по крайней мере примерно год назад они меня просили сделать небольшие изменения в программе.
Смысл примерно такой. Имеется две программы - серверная и клиентская и обе они лежат на сервере. Папка с клиентской программой расшарена только на чтение и именно с этой шары запускается на ученических компьютерах. Благодаря чему во-первых не нужно указывать имя сервера так как программа может его узнать из своей командной строки, а во-вторых гарантируется, что будет запущена оригинальная версия клиента (а не какая нибудь пропатченная

) - очевидно, что клиентская программа запущенная из другого места (например локально) не сможет подключиться к серверу, так как имени сервера не будет в командной строке запуска.
Ещё на сервере расшарена другая папка с полным доступом для общения сервера с клиентами. Когда клиентское приложение запускается, оно создаёт в этой папке файл с именем "ИмяКомпьютера.CLI", записывает в него своё состояние и изменяет расширение файла на ".SRV". Сервер же по таймеру (примерно 2 раза в секунду) просматривает эту папку на наличие файлов с расширением ".SRV", читает эти файлы обновляя информацию о клиентах в своём списке, потом записывает в этот файл команду клиенту и меняет расширение файла на ".CLI". В свою очередь клиент тоже по таймеру проверяет содержимое этой папки на наличие файла с именем "ИмяКомпьютера.CLI", если есть - читает из него команду сервера, выполняет её, записывает в этот файл своё состояние и опять изменяет расширение файла на ".SRV" и т.д. Когда сервер некоторое время не обнаруживает ответа от какого либо клиента (в виде файла с расширением ".SRV") то считается что связь с клиентом оборвана и сервер убирает этого клиента из своего списка.