2013-12-20 131 views
1

我正在創建一個Java應用程序,它將自動將podcast下載到某人的電腦。我想知道我是否應該通過Socket連接到我的服務器或簡單地使用URL類。用URL和套接字下載的速度有什麼區別?

有誰知道通過URL與套接字連接下載的速度差異。我知道URL對象是建立在Socket對象之上的,但我不確定運行時間有什麼不同。

+3

我會說,一般來說,它無關緊要,在大多數情況下它是無關緊要的。通常,您需要以任何方式實現URL爲您實現的協議開銷,因此在一天結束時,您會做同樣的事情。 – MadProgrammer

+1

爲什麼會有區別?您的套接字是否會傳輸不同類型的數據? – zapl

+0

你的程序速度和網絡速度之間的差異是如此不同。 –

回答

2

使用現有的庫支持。直接使用套接字執行此任務的唯一原因是連接到定製協議(即而不是 HTTP,因爲它沒有合適的實現)。有很多現有的傳輸協議 - 不要浪費時間爲這種通用情況創建另一個傳輸協議。

HttpURLConnection最終使用「說」HTTP的TCP套接字實現。直接使用套接字需要編寫代碼來理解HTTP - 無論在何種情況下都是必需的。此代碼即使「比HttpUrlConnection更高效」完成,也只會代表實際執行時間的一小部分,其將由其他因素支配。

而是考慮如何速度可以在更高的層次加以改進:

  • 下載多個遠程資源的同時
  • 使用HTTP管道,如適用
  • 啓用HTTP壓縮,當適用
  • 切換到爲多文件同步設計的不同協議
相關問題