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