Внедрение FTP-сервера / клиента в C
Меня просят о назначении, которое требует реализации протокола FTP. Я ознакомился с документацией, приведенной на RFC959.
Я запутался с парой деталей реализации
1) Если файл необходимо передать, какую функцию можно использовать. Можно ли использовать простую функцию send() для нетекстового файла.
2) Можно ли получить хороший учебник, в котором говорится о реализации режимов и файловых структур, и указать, какие из них необходимы.
надеюсь получить ответ в ближайшее время.
2 ответа
FTP передает файл через обычное TCP-соединение, и вы можете передавать любые файлы с ним. Нет разницы между текстовыми файлами и двоичными файлами, все они представляют собой просто последовательность байтов.
Для передачи файла достаточно открыть соединение и вызвать write
функционировать много раз, пока не будет передан весь файл (проверьте возвращаемое значение write
чтобы узнать, сколько байтов было отправлено).
Остальная часть протокола FTP основана на тексте и отправляется на другой порт.
Существует хорошее руководство по использованию FTP напрямую через netcat, которое может быть полезно для понимания того, как все работает. Понимание активного и пассивного режима также может быть полезным, так как вы собираетесь реализовать хотя бы один из них.
Кроме того, используйте wireshark для отслеживания потока TCP и просмотра данных, которые вы отправляете / получаете, это может быть очень полезно при отладке.
Реализация протокола не даст вам файловую структуру. Протокол здесь для определения некоторых правил и состояний.
Часть разработки / разработки зависит от вас. Вам просто нужно соблюдать протокол FTP, чтобы добиться нормализации и совместимости с другим клиентом / сервером.
С наилучшими пожеланиями