一旦乙個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...