-4

我需要通过 p2p 在互联网上开发文件共享应用程序。对于开发基于 p2p 的应用程序,我有一个非常粗略的想法。

假设我有一台服务器,它的静态 IP 在特定端口(如 5001)上运行。现在客户端连接到服务器并发送自己的公共 IP。

问题 1

在 C# 的帮助下,客户端如何连接到服务器并发送自己的公共 IP?指导我需要使用哪个类?

当服务器将从客户端获取 IP 时,它将存储。因此,当两个客户端连接时,服务器具有两台不同 PC 的 IP 信息。PC1 将请求服务器获取 PC2 的 IP,同样 PC2 将请求获取 PC1 的 IP。所以现在PC1和PC2都拥有彼此的IP。

问题 2

现在的问题是 PC1 如何连接到 PC2 我需要编写哪些代码来连接?

问题 3

现在的问题是,如果 PC1 可以连接到 PC2,那么 PC1 如何将文件发送到 PC2?

请告诉我我需要使用哪个类来开发这种基于 P2P 的文件共享应用程序。

4

1 回答 1

0

谈到 peer2peer,您总是需要至少一台启用了端口转发的 PC。这意味着,如果您在 pc1 上有一个侦听器/服务器,在 pc2 上有一个客户端,则需要在 pc1 上进行端口转发。

这通常称为 HighID/LowID,是几乎在每个路由器中实施的 NAT 防火墙的症状。如果没有至少一个端口转发,两台 PC 就无法连接。这是因为路由器不知道将哪个本地 IP 映射到传入的 TCP 数据包,除非有转发。

至于你可以使用哪些类:看看System.Net.TcpClientSystem.Net.TcpListener

于 2012-04-20T08:22:59.530 回答