无法通过unix tcp套接字发送二进制数据
我正在尝试使用常用函数(如fread()、fwrite()、send()和recv())实现ftp命令GET和PUT通过UNIX套接字进行文件传输 它适用于文本文件,但不适用于二进制文件(diff说:“二进制文件不同”) 如有任何关于以下方面的建议,将不胜感激:无法通过unix tcp套接字发送二进制数据,c,unix,tcpsocket,C,Unix,Tcpsocket,我正在尝试使用常用函数(如fread()、fwrite()、send()和recv())实现ftp命令GET和PUT通过UNIX套接字进行文件传输 它适用于文本文件,但不适用于二进制文件(diff说:“二进制文件不同”) 如有任何关于以下方面的建议,将不胜感激: 是否有任何特定的命令来读取和写入二进制数据 diff可以用来比较二进制文件吗 有可能以内存块的形式发送二进制部分吗 FTP协议有两种操作模式:文本和二进制。 在任何FTP客户机上都可以试试——我相信在两者之间切换的命令是ASCII和BI
FTP协议有两种操作模式:文本和二进制。
在任何FTP客户机上都可以试试——我相信在两者之间切换的命令是ASCII和BIN。文本模式仅对我记忆中的CR/LF对有效。如果您正在从文件读取数据,然后将文件数据写入套接字,请确保以二进制模式打开文件
是的,可以使用diff来比较二进制文件,通常使用来抑制差异的实际打印,这对于二进制文件来说几乎没有意义。您也可以使用或(如果有)。我正在使用unix TCP套接字模拟FTP的行为,因此我想知道是否有任何方法可以通过简单的unix传输二进制文件socket@abcdxyz您必须告诉FTP服务器您希望以哪种模式发送/接收文件,文本或二进制。谢谢你的建议:)但我面临另一个问题。。当我尝试传输一个大小为4.3kb的图像时,代码工作得非常好。但是它拒绝传输一个5.7MB的音频文件:(请帮助!我需要将数据转换成字节然后传输吗?