Необходимо реализовать простейшую программу-сервер с использованием протокола TCP. Сервер должен поддерживать выполнение нескольких комманд, определяемых на усмотрение студента, но как минимум должен поддерживать выполнение следующих (или аналогичных): ECHO (возвращает данные переданные клиентом после команды), TIME (возвращает текущее время сервера), CLOSE (EXIT/QUIT) (закрывает соединение). Комманда может иметь параметры (например ECHO). Любая команда должна оканчиваться символами \r\n или \n. В качестве клиента предполагается использование системных утилит: telnet, netcat и других. Возможно использование собственной программы клиента, но это является не обязательным. Продемонстрировать использование утилит: nmap -- сканирование портов сервера, netstat -- список открытых сокетов на сервере, номера портов.
Клиент серверная программа для передачи файла по сети с использованием протокола TCP
Необходимо реализовать клиент и последовательный сервер, позволяющие обмениваться файлами. Сервер должен продолжать поддерживать комманды, которые были реализованы в лабораторной работе №1, добавляя к этому комманду передачи файла. Запрос на закачку файла на сервер или скачивание с него, должен инцировать клиент. Команды могут быть к примеру UPLOAD/DOWNLOAD. Решать проблемы связанные с тем что такого файла нет (например мы хотим скачть файл с сервера, но не знаем каково его имя), не нужно, достаточно вывести сообщение, что файла с запрашиваемым именем нет. Файлы должны передаваться с помощью протокола TCP. Реализация должна учитывать возможные исключительные ситуации, связанные с проблемами сети, такие как физический или программный обрыв соединения. Алгоритм определения разрыва соединения может быть любым, но таким, чтобы пользователь смог узнать об этом в разумное время (от 30 секунд до 2-5 минут). До вывода сообщения о наличии проблем с соединением программа должна восстанавливать передачу файла самостоятельно. Если же сообщение о проблеме уже выведено, то решение о попытке восстановления должен принимать пользователь. Сервер обязан поддерживать восстановление докачивания/скачивания файла. Допускаются следующие ограничения: докачка осуществляется если после восстановления соединения подключился тот же клиент и пытается докачать/скачать тот же файл, что и в прошлую сессию. Если успел подключится другой клиент, или сервер был перезапущен, то сервер имеет полное право удалить файлы (и данные сессии) относящиеся к незавершенным загрузкам. Сервер и клиент обязаны работать в рамках одного потока.
Модификация программы из Л.р. 1. Добавить к клиенту и серверу возможность работы по протоколу UDP, передачи комманд и файлов. Уделить внимание обработке исключительных ситуаций, например физического или программного обрыва соединения.