當客戶端a想要查詢p2p網路上其他客戶端提供共享的檔案時,系統會執行下面的操作:
·客戶端a以自己的使用者名稱登入到索引伺服器上。
·客戶端a向伺服器註冊自己想提供給其他使用者共享的檔案,以便其他使用者能夠查詢到這些檔案。
·客戶端a向伺服器發出申請,查詢與一定的輸入模式相匹配的檔案。
·索引伺服器在其資料庫中搜尋給定的檔名,並將搜尋到的如下的結果返回給客戶端a:
·提供該檔案的客戶端,例如客戶端b。
·該使用者的ip位址。
·它搜尋到的檔名。
·一旦成功地建立起乙個連線,就可以通知對方開始傳送檔案了。
這樣的p2p網路可以用來共享任何型別的檔案,它既可以用在區域網上,也可以作在網際網路上。
c#語言由於其對網路功能良好的支援,特別是內建地支援tcplistener和tcpclient這二個類,使得利用它開發p2p應用程式變得非常容易。下面就是乙個使用c#開發的p2p應用的例子:
public mytcplistener(int port) : base(port)
public void stopme() }
} public class transfer
else
this.tcpl = new mytcplistener(port);
} public void transfershutdown()
public void listenforpeers()
reader.close();
datastream.flush();
datastream.close();
} }
catch(socketexception ex) }
public void downloadtoclient(string server, string remotefilename, string localfilename)
else
// 嘗試與伺服器連線
iphostentry iphost = dns.resolve(server);
string aliases = iphost.aliases;
ipaddress addr = iphost.addresslist;
ipendpoint ep = new ipendpoint(addr[0], port);
tcpc.connect(ep);
// 獲得流物件
stream s = tcpc.getstream();
byte b = encoding.ascii.getbytes(remotefilename.tochararray());
s.write( b, 0, b.length );
int bytes;
filestream fs = new filestream(localfilename, filemode.openorcreate);
binarywriter w = new binarywriter(fs);
// 讀取流物件,並將其轉換為ascii碼
while( (bytes = s.read(read, 0, read.length)) != 0)
tcpc.close();
w.close();
fs.close();
} catch(exception ex) }
} }
使用C 開發乙個簡單的P2P應用
當客戶端a想要查詢p2p網路上其他客戶端提供共享的檔案時,系統會執行下面的操作 客戶端a以自己的使用者名稱登入到索引伺服器上。客戶端a向伺服器註冊自己想提供給其他使用者共享的檔案,以便其他使用者能夠查詢到這些檔案。客戶端a向伺服器發出申請,查詢與一定的輸入模式相匹配的檔案。索引伺服器在其資料庫中搜尋...
使用C 開發乙個簡單的P2P應用
使用c 開發乙個簡單的p2p應用 出處 p2p中國 pp c 語言由於其對網路功能良好的支援,特別是內建地支援tcplistener和tcpclient這二個類,使得利用它開發p2p應用程式變得非常容易。下面就是乙個使用c 開發的p2p應用的例子 public mytcplistener int p...
使用C 開發乙個簡單的P2P應用
出處 p2p中國 ppcn.net c 語言由於其對網路功能良好的支援,特別是內建地支援tcplistener和tcpclient這二個類,使得利用它開發p2p應用程式變得非常容易。下面就是乙個使用c 開發的p2p應用的例子 public mytcplistener int port base po...