電騾客戶端和服務器使用不可靠的
UDP
服務來保活和搜索增強。由電騾客戶端產生的
UDP
包的數量(注意,包不是字節)達到電騾客戶端發送包總數的
5%
;這依賴于在客戶端的服務器列表中服務器的數量、客戶端下載列表中源的數量以及用戶執行的搜索的數量。
UDP
包通過定時器來觸發,
100ms
,如果有一個單獨線程來負責發送
UDP
通訊,結果最大是每秒
10
個
UDP
包。
1.1
??????????????????????
服務器保活和狀態信息
客戶端定期驗證它的服務器列表的狀態。這個驗證使用
UDP
服務器狀態請求(見
6.3.3
)和
UDP
服務器描述請求(見
6.3.7
)報文來完成。現在介紹的簡單的保活模式每個小時產生少于幾打個包。在任何情況下,最大高產生率是
0.2
個包每秒(或每
5
秒一個包)。當檢查一個服務器的狀態是,客戶端首先給服務器發送一個狀態請求,然后是每兩個服務器描述請求一個狀態請求的方式發送;見圖
3.1
:
圖
3.1
:
UDP
的保活循環
服務器的狀態請求包含一個隨機數,這個隨機數在服務器的響應中返回。如果服務器中返回的數不同于前面客戶端返回的,響應中的信息會被拋棄。每次從客戶端發送到服務器的狀態請求包,客戶端都會啟動一個嘗試計數器。如果嘗試次數達到設置的最大值是,就認為該服務器是死的,將它從客戶端的服務器列表中刪除。服務器響應包括幾個數據項:服務器狀態響應(
6.3.4
節)包括當前的用戶數和服務器上的文件,服務器的軟和硬限制(
1.7
節)。服務器描述響應(
6.3.8
節)包括服務器名稱和一個簡單的描述字符串。圖
3.2
描述了一個客戶端和活動服務器之間的完整保活序列的消息流。
圖
3.2
:
UDP
保活序列
1.2
??????????????????????
文件搜索增強
電騾客戶端可能被配置而用來使用
UDP
來增強文件搜索功能。
UDP
搜索請求格式幾乎與
TCP
搜索請求相同。服務器僅僅在有搜索結果的時候響應。有兩種
UDP
搜索報文的
OPCODE
,我不能他們之間不同。
UDP
搜索包發送給客戶端服務器列表中的服務器。見
6.3.5
和
6.3.6
節詳細介紹。
1.3
??????????????????????
文件源搜索增強
當客戶端所擁有的下載隊列中的某個文件的源的數量小于設置的極限(
100
)時,客戶端定期向它的服務器隊列中的服務器發送
UDP
包來得到更多源。有個包可能每秒都發送,它時源搜索客戶端產生的
UDP
通訊中最重要部分。消息格式(
6.3.1
節介紹)和
TCP
計數器部分非常相似。注意,同
TCP
源搜索比較,
UDP
源搜索與文件搜索是隔離的并且依賴于客戶端擁有的給定文件的源的數量。