невозможно отправить двоичные данные через сокет unix tcp - PullRequest
1 голос
/ 26 апреля 2011

Я пытаюсь реализовать команды ftp GET и PUT через сокет UNIX для передачи файлов, используя обычные функции, такие как fread (), fwrite (), send () и recv ().

Работает нормальнодля текстовых файлов, но не для бинарных файлов (diff говорит: «бинарные файлы отличаются»)

Будем благодарны за любые предложения относительно следующего:

  1. Есть ли какие-либо конкретные команды для чтенияи записать двоичные данные?
  2. Можно ли использовать diff для сравнения двоичных файлов?
  3. Можно ли отправлять двоичные части в куски памяти?

Ответы [ 2 ]

3 голосов
/ 26 апреля 2011

протокол FTP имеет 2 режима работы: текстовый и двоичный. попробуйте это в любом клиенте FTP - я считаю, что команды для переключения между ними ASCII и BIN. Текстовый режим имеет эффект только из того, что я помню на парах CR / LF.

0 голосов
/ 26 апреля 2011

Если вы читаете из файла, а затем записываете данные файла в сокет, обязательно откройте файл в двоичном режиме.

Да, diff можно использовать для сравнения двоичных файлов, обычно с параметром -q для подавления фактической печати различий, что редко имеет смысл для двоичных файлов. Вы также можете использовать md5 или cmp , если они у вас есть.

...