本主题类似于this thread
对于网络编程这个话题,我还是个新手,除了在一台本地机器上使用基本的TCP/UDP之外,我从来没有做过任何事情。现在,我正在开发一个需要P2P网络支持的应用程序。更具体地说,我需要应用程序通过互联网连接和通信,最好不要使用服务器来在客户端之间进行匹配。
我知道并假设几乎所有用户都在路由器后面,这会使过程变得复杂,因为两个客户端都不能初始化到另一个的直接连接。
我知道UPnP是一个允许端口转发而不需要用户手动配置的选项,但到目前为止,这还不是一个选项。他们有没有办法实现我的目标,或者我需要那台服务器?
发布于 2009-07-26 01:18:00
你需要一个服务器来交换IP地址等等。正如另一个线程从字面上指出的那样,保证连接的唯一方法是通过服务器代理。大多数对等系统在大多数情况下使用UPnP和NAT Hole Punching (此方法需要中继端口信息的服务器,并且仅与UDP一起作用)来建立连接。
NAT Hole Punching的工作原理是:两个客户端都建立到服务器的连接,然后两个客户端都尝试直接连接到另一个已中继到另一个的端口。大多数UDP NAT会短时间地记住IP地址和端口,因此尽管数据从未到达另一端(这与UDP无关),但其他客户端将在几分钟后尝试连接到该报告,因为NAT期望得到回复。
发布于 2009-07-30 08:19:12
RFC 5128, "State of Peer-to-Peer (P2P) Communication across Network Address Translators (NATs)"是一个非常好的读物,它只适合你:-)。
发布于 2009-07-26 01:05:05
使用WCF:http://msdn.microsoft.com/en-us/library/cc297274.aspx查看P2P通道
它工作得很好。
https://stackoverflow.com/questions/1183459
复制相似问题