2011-01-19 94 views
0

我只是想知道兩個應用程序如何在互聯網上互相交互。如何向其他人發送消息,因爲當IP不固定時。請給我一些編碼提示,通過這些提示,當IP未知時,p2p應用程序會通過互聯網連接另一個應用程序。關於p2p連接和c#

請幫我詳細。

+0

你是怎麼意思互動的?你說「發送一些消息給其他人,因爲當IP不固定」,但是什麼樣的消息,爲什麼?你有嘗試過什麼嗎?幫助我們幫助您! – 2011-01-19 13:59:52

回答

1

通常情況下,這種情況將發生在某個已知位置的服務器上的某種目錄中。

1

正如Spender指出的,如果不使用服務器作爲中介,則無法做到這一點。如果你不知道他們的地址,你希望能夠拜訪一位朋友嗎?

換句話說,每兩個機器打算建立P2P連接如會接觸的已知服務器交換連接信息。之後,他們理論上可以相互交流。

但是,很可能他們是使用NAT路由器的後面,因此沒有路由器或訴諸某種技術來解決NAT對任一打開端口無法接收傳入的數據包。

2

的方式,對等通道netPeerTcpBinding在WCF的工作原理是,它使用對等名稱解析協議和簡單服務發現協議的組合發現對等網格上的對等體。

SSDP在本地子網上工作,發現可以直接連接的對等設備。它通過傳統的網絡廣播技術來完成。

PNRP,在另一方面,通過使用IPv6在網絡上,並在互聯網上的作品。由於大多數網絡還不支持IPv6,因此Teredo用於通過IPv4隧道傳輸此通信。

當P2P網是在全球雲出版,網名發送到一個微軟的公開訪問/免費使用PNRP種子服務器。當新的同行上線時,他們首先要求這些種子服務器提供部分對等列表。此列表然後用於執行進一步的對等名稱解析。

當一個節點是在全球雲解決,它通常解析爲IPv6地址。任何時候,對方的地址都會改變,這些信息會通過網格發送出去,以便其他對等方知道它。

這實質上是一種分佈式哈希表:http://en.wikipedia.org/wiki/Distributed_hash_table

當你向外發送數據的網格,該數據是由對等渠道向發送機直接知道的同行路由。然後這些對等體中的每一個隨後路由到他們的知名對等體,等等。直到消息已經發送給網狀網絡上的所有對等體。

此作品在互聯網上(甚至落後於防火牆/ NAT設備)感謝的Teredo和IPv6。