2011-04-26 110 views
1

我試圖實現ftp命令GET和PUT通過UNIX套接字進行文件傳輸,使用常用函數如fread(),fwrite(),send()和recv()。無法通過unix tcp socket發送二進制數據

它工作正常的文本文件,但對於二進制文件失敗(DIFF說:「二進制文件不同」)

就下列任何建議將理解:

  1. 是否有任何特定的命令讀取和寫入二進制數據?
  2. 可以使用diff比較二進制文件嗎?
  3. 是否有可能發送二進制部分的內存塊?

回答

3

FTP協議有兩種操作模式:文本和二進制。 嘗試在任何FTP客戶端 - 我相信用於切換的命令是ASCII和BIN。文本模式隻影響我在CR/LF對上的記憶。

+0

我正在模擬使用unix TCP套接字的FTP行爲,因此我想知道是否有任何方法可以通過簡單的unix套接字傳輸二進制文件 – abcdxyz 2011-04-26 11:59:53

+0

@abcdxyz您必須告訴FTP服務器哪種模式您希望以文本或二進制文件的形式發送/接收文件。 – nos 2011-04-26 13:22:29

0

如果您正在讀取文件,然後將文件的數據寫入套接字,請確保以二進制模式打開文件

是的,diff可以用來比較二進制文件,通常用-q option來抑制差異的實際打印,這對二進制文件來說很少有意義。如果您有,也可以使用md5cmp

+0

感謝您的建議:)但我面臨着另一個問題..代碼作品完美時,我試圖傳輸4.3kb大小的圖像..但它拒絕傳輸5.7 MB的音頻文件:(請幫助!做我需要將數據轉換爲字節然後傳輸它們? – abcdxyz 2011-04-26 16:46:13