Невозможно отправить двоичные данные через сокет unix tcp
Я пытаюсь реализовать команды ftp GET и PUT через сокет UNIX для передачи файлов, используя обычные функции, такие как fread (), fwrite (), send () и recv ().
Он отлично работает для текстовых файлов, но не работает для двоичных файлов (diff говорит: "двоичные файлы отличаются")
Будем благодарны за любые предложения относительно следующего:
- Существуют ли какие-либо конкретные команды для чтения и записи двоичных данных?
- Можно ли использовать diff для сравнения двоичных файлов?
- Можно ли отправить двоичные части в куски памяти?
2 ответа
Протокол FTP имеет 2 режима работы: текстовый и двоичный. попробуйте это в любом FTP-клиенте - я считаю, что команды для переключения между ними - ASCII и BIN. Текстовый режим имеет эффект только из того, что я помню на парах CR/LF.
Если вы читаете из файла, а затем записываете данные файла в сокет, обязательно откройте файл в двоичном режиме.
Да, diff можно использовать для сравнения двоичных файлов, обычно с параметром -q для подавления фактической печати различий, что редко имеет смысл для двоичных файлов. Вы также можете использовать md5 или cmp, если они у вас есть.