我只是想知道两个应用程序如何在互联网上互相交互。如何将一些消息发送给另一个消息因为IP未被修复时。请给我一些编码技巧,当IP不知道时,p2p应用程序通过互联网连接其他应用程序。
请详细帮助我。
答案 0 :(得分:2)
在尝试深入了解实施细节和编码技巧之前,您最好先了解P2P网络的工作原理,可能的架构等等(从http://en.wikipedia.org/wiki/Peer-to-peer开始)。你的问题太宽泛了,无法“详细帮助你”。
编辑: 为了更快地进入,这可以很方便:.NET P2P: Writing Peer-to-Peer Networked Apps with the Microsoft .NET Framework
答案 1 :(得分:2)
WCF中对等通道netPeerTcpBinding的工作方式是它使用对等名称解析协议和简单服务发现协议的组合来发现对等网格上的对等体。
SSDP在本地子网上工作,以发现可以直接连接的对等方。它通过传统的网络广播技术实现这一目标。
另一方面,PNRP通过使用IPv6在网络和互联网上运行。由于大多数网络尚不支持IPv6,因此Teredo用于通过IPv4隧道传输此通信。当P2P网格在全球云上发布时,网格名称将被发送到Microsoft的一个公共可访问/免费使用的PNRP种子服务器。当新同伴上线时,他们首先要求这些种子服务器提供部分对等列表。然后使用此列表执行更进一步的对等名称解析。
在全局云上解析对等体时,通常会将其解析为IPv6地址。只要对等体的地址发生变化,就会通过网格发送这些信息,以便其他对等体知道它。
这实际上是一个分布式哈希表:http://en.wikipedia.org/wiki/Distributed_hash_table
当您在网格上发送数据时,此数据将由对等通道路由到发送计算机直接了解的对等方。然后,这些对等体中的每一个都路由到它们众所周知的对等体等。这一直持续到消息被发送到网格上的所有对等体。
由于Teredo和IPv6,这可以通过互联网(甚至在防火墙/ NAT设备后面)工作。
答案 2 :(得分:1)
通常这会通过托管在已知位置的服务器上的某种目录来实现。
答案 3 :(得分:1)
正如Spender指出的那样,如果不将服务器作为中间人使用,就无法做到这一点。如果你不知道他们的地址,你希望能够拜访一位朋友吗?
换句话说,打算建立P2P连接的两台机器中的每一台都将联系已知服务器以交换连接信息。之后他们可以在理论上相互交谈。
但是,很可能它们落后于使用NAT的路由器,因此无法在路由器上打开端口或采用某种技术绕过NAT接收传入数据包。