QQ傳檔案是怎麼實現互相傳檔案的 ?

時間 2022-01-22 18:04:43

1樓:brooks

拋開QQ,從一般角度上聊聊p2p的檔案實時傳輸。原本很簡單的事情,因為nat的存在變得比較繁瑣,一些特殊情況需要特別優化。

通常使用tcp協議進行檔案傳輸,假定A、B、S分別是兩個客戶端和Server。A、B分別維護到S的信令通道,通過信令通道A、B可以知道對方的網路型別、內網路ip和port。主要有幾種情況:

1. 如果A、B至少有乙個公網ip,這種情況比較簡單,可以方便地建立p2p連線。

2. 如果A、B都是內網,並且網路ip一致,那麼A、B可能處於同一區域網內,嘗試AB直接內網ip互連。

3. 如果A、B內網並且網路ip不一致,可以藉由伺服器S嘗試nat穿越,A、B互相嘗試打洞。當然,這個並不總能成功,在某些symmetric nat上會失敗。

4. 最後,上面都不成功,只能通過伺服器S中轉檔案資料。

2樓:

p2p模式,檔案小時可以離線上傳到伺服器,過大時伺服器拒絕!

伺服器主要建立兩台電腦之間的實時聯絡!

winrar壓縮檔案是怎麼實現通過恢復記錄使損壞檔案被修復的?

范德成 Reed Solomon糾錯碼https en.wikipedia.org wiki Reed E2 80 93Solomon error correction 貌似很有用。還有Erasure coding和RAID5 6的模式也可以用於糾錯。 夏雨婷 壓縮檔案損壞後是如何修復的?如果沒猜錯...

標頭檔案怎麼知道誰實現它的?

你問得不是很清楚,我也不知道我以下的回答是不是你需要的。假設有三個檔案 a.h int foo void a.cpp int foo void b.cpp include a.h int main void 其中對編譯器而言 預編譯之後 b.cpp 等同於 b.cpp int foo void in...

學會哈夫曼樹怎麼實現壓縮檔案?

望山 你可以去Github看看cyan4973的FiniteStateEntropy的原始碼,它裡面除了FSE演算法,還有乙個HUFF0,是優秀的huffman編碼實現。這位作者是當今世界上最頂級的無失真壓縮大牛之一,LZ4的作者。 悽臨雨 壓縮時不在是文字,甚至不是以位元組為單位,而是以位為單位來...