2009-08-29 148 views

回答

1

其中3,其HTTP。 「傳輸文件」的有效行爲具有相同的速度,但是:FTP需要太多「對話」來穩定會話,並創建並行連接來傳輸數據,所有這些「說話」需要多一點時間開始傳輸文件。出於同樣的原因,由於FTP打開隨機端口,您可能在防火牆和路由器方面遇到問題,如果FTP客戶端不支持「被動模式」,那就特別重要。

HTTP更客觀,你連接,告訴你想要什麼,並將其作爲答案。沒有等等等等等等。

SSH不是傳輸協議。 SSH代表「Secure Shell」。 如果你的意思是SSL,它也不是一個傳輸協議,它是一個安全層,通常用於封裝HTTP會話。

但也許它不是一個更快的問題,真正的問題是:你想要做什麼?根據您的問題,這些可能都不是一種選擇。

0

您是否可以控制端點和任何中間防火牆?與其他選項相比,FTP的防火牆友好性更低。基於SSH的工具(sftp,scp)相當不錯,但是有些ISP已知可以抑制或干擾加密流量(Comcast,我在看你!)你是否考慮過rsync?在我的工作中,這是我們用於通過長途互聯網連接傳輸大量數據集的工具。

1

如果可以,請使用Socket.SendFile()。這是從A點到B點獲取文件的最簡單方法。在不知道要完成的具體內容的情況下,很難提供更好的建議。 FTP可能是我會使用,否則System.Net有一個相當不錯的FtpClient對象,您可以使用和示例文檔相當好。 HTTP和FTP都使用TCP,因此您可能不會看到它們之間的顯着速度差異,並且HTTP通常會有其他潛在行爲的標頭(嘗試使用Expect-100繼續上傳文件並且無需證書到需要AUTH的服務器並查看您的連接會發生什麼)。使用Socket.SendFile(),因爲套接字根據定義與協議無關,您可以通過UDP或TCP使用相同的代碼發送文件,但我只建議如果您通過局域網發送數據包丟失幾乎爲0 。通過互聯網的UDP不是一個好主意。