无法通过unix tcp套接字发送二进制数据

时间:2011-04-26 11:41:40

标签: c unix tcpsocket

我正在尝试使用常用函数(如fread(),fwrite(),send()和recv())通过UNIX套接字实现ftp命令GET和PUT以进行文件传输。

它适用于文本文件,但二进制文件失败(diff说:“二进制文件不同”)

有关以下内容的任何建议将不胜感激:

  1. 是否有任何特定的命令来读写二进制数据?
  2. 可以用于比较二进制文件吗?
  3. 是否可以在内存块中发送二进制文件?

2 个答案:

答案 0 :(得分:3)

FTP协议有两种操作模式:文本和二进制。 在任何FTP客户端尝试它 - 我相信切换的命令是ASCII和BIN。文本模式仅在我记得的CR / LF对上有效。

答案 1 :(得分:0)

如果您正在读取文件,然后将文件的数据写入套接字,请确保以二进制模式打开文件

是的,diff可用于比较二进制文件,通常使用-q option来抑制差异的实际打印,这对二进制文件很少有意义。如果您有md5cmp,也可以使用它们。