Gnutella的檔案傳輸機制

2021-04-06 15:48:32 字數 1291 閱讀 8128

一旦乙個servent收到乙個queryhit訊息,它可能會建立由這個訊息的結果集描述的檔案集中乙個檔案的

義在rfc中。下面只包括最基本的內容。以下例子假設使用http1.1協議。

connection頭告訴遠端主機當傳輸完畢時是否應該關掉連線。"connection: close"意思是當傳完畢時必

須關掉連線。"connection: keep-alive"或者沒有connection頭意思是應該保持連線。客戶端可能接著會

發出另乙個範圍或者另乙個檔案的請求。這個請求可能在上一次傳輸完成之前就已被傳送。rfc2616的8.1

章節定義了持續連線。

必須忽視sevent無法識別的標題。

能在乙個防火牆後面,而這個防火牆並不允許到guntella埠的incoming連線。如果無法建立乙個直連,

傳送queryhit訊息的servent來請求乙個檔案push。push請求的目標servent(由push訊息的servent

identifier定義)應該,在收到push訊息之後,嘗試建立乙個新的tcp/ip連線到請求的servent(由push消

息的ip位址和埠域定義)。如果這個無法建立這個直連,可能是因為傳送push請求的servent自己也位

於乙個防火牆後面。這樣的話,無法用這個文件描述的方法進行檔案傳輸。

push訊息的用法

如果從乙個不支援incoming連線的servent那裡收到了乙個queryhit訊息,這個servent可能會傳送乙個

push訊息。如果傳送queryhit訊息的servent在防火牆後面,這就有可能發生。當servent收到乙個push消

息,當且僅當servent_identifier域包含它本身的servent識別符號時,它應該對push請求發出響應。push

訊息頭的message_id域不應該包含和它相關的queryhit訊息相同的值,而應該根據message_id生成演算法生

成乙個新的值。

push訊息通過servent識別符號的值被傳會queryhit的發起者。這意味者不同的push訊息可以有著同樣的

servent identifier。如果頭部的messageid相同,push訊息應被認為是重複的。因為push訊息不被廣播

,所以重複的訊息應該是非常少的。

送下面的字串

giv :/

如果在乙個由push發起的檔案傳輸時tcp連線丟失,強烈建議發起tcp連線的servent(提供檔案的servent

)嘗試重新連線。這是很重要的,因為收取檔案的servent可能沒法再向提供檔案的servent傳送另乙個

push訊息。

Gnutella的檔案傳輸機制

一旦乙個servent收到乙個queryhit訊息,它可能會建立由這個訊息的結果集描述的檔案集中乙個檔案的 義在rfc中。下面只包括最基本的內容。以下例子假設使用http1.1協議。connection頭告訴遠端主機當傳輸完畢時是否應該關掉連線。connection close 意思是當傳完畢時必 ...

Gnutella的檔案傳輸機制

gnutella的檔案傳輸機制 一旦乙個servent收到乙個queryhit訊息,它可能會建立由這個訊息的結果集描述的檔案集中乙個檔案的 義在rfc中。下面只包括最基本的內容。以下例子假設使用http1.1協議。connection頭告訴遠端主機當傳輸完畢時是否應該關掉連線。connection ...

VC檔案傳輸

vc 檔案傳輸的實現 2008 07 20 20 33 要實現檔案傳輸最簡單的辦法是寫兩個執行緒,乙個伺服器段的傳送處理執行緒,乙個客戶端的接收處理執行緒。執行緒處理函式需要宣告為類的靜態成員,由於不可訪問類內部的資料成員,所以引數傳遞裡面最好有個類的指標 伺服器段的傳送處理執行緒 cfiletra...