Реализована FTP-команда TYPE
Issue #14 - Реализовать FTP-команду TYPE
Реализована FTP-команда MODE
Issue #15 - Реализовать FTP-команду MODE
Реализована FTP-команда STRU
Issue #16 - Реализовать FTP-команду STRU
Реализована FTP-команда PASV для использования пассивного режима.
Реализован метод ProtocolInterpreter::getPort, который возвращает номер динамического порта, полученного из 227-го отклика команды PASV.
Реализована FTP-команда RETR. При этом в процессе ее работы если не удалось выполнить передачу в одном из режимов (в активном или пассивном), то автоматически происходит переключение на другой режим и осуществляется повторная попытка передачи.
Добавлен класс UserDTP, предназначенный для прослушивания соединения от сервера, а также для передачи и получения файлов.
Добавлена поточная функция startDTP для запуска передачи файлов отдельным потоком. В классе ProtocolInterpreter она объявлена как friend. Таким образом из нее становится возможным получить доступ ко всем полям класса ProtocolInterpreter. И по этой причине становится возможным использовать ее как поточную функцию в CreateThread.
Issue #13 - Реализовать FTP-команду RETR
Исправлена ошибка с порядком вывода откликов на команды после запроса на передачу.
Реализована команда PORT.
IP-адрес определяется программно и порт генерируется случайным образом.
Issue #17 - Реализовать FTP-команду PORT
Реализована поддержка соединения с сервером по его доменному имени. Фактически производится преобразование имени в IP-адрес.
Issue #9 - Соединение по доменному имени