【问题标题】:unable to send binary data over unix tcp socket无法通过 unix tcp 套接字发送二进制数据
【发布时间】:2011-04-26 11:41:39
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c unix tcpsocket


    【解决方案1】:

    FTP 协议有两种操作模式:文本和二进制。 在任何 FTP 客户端中尝试它——我相信用于切换的命令是 ASCII 和 BIN。文本模式仅对我回忆的 CR/LF 对产生影响。

    【讨论】:

    • 我正在使用 unix TCP 套接字模拟 FTP 的行为,因此我想知道有什么方法可以通过简单的 unix 套接字传输二进制文件
    • @abcdxyz 您必须告诉 FTP 服务器您希望以哪种模式发送/接收文件,文本或二进制。
    【解决方案2】:

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

    是的,diff 可用于比较二进制文件,通常使用-q option 来抑制差异的实际打印,这对二进制文件几乎没有意义。如果有的话,你也可以使用md5cmp

    【讨论】:

    • 感谢您的建议 :) 但我面临另一个问题.. 当我尝试传输大小为 4.3kb 的图像时,代码运行良好..但它拒绝传输 5.7 的音频文件mb :(请帮忙!我需要将数据转换为字节然后传输它们吗?
    猜你喜欢
    • 2011-12-03
    • 2020-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-23
    • 2013-08-21
    • 2012-10-11
    相关资源
    最近更新 更多