自动转发来自客户端的端口

Automatically forward ports from clients

我的系统有一个服务器和多个客户端。服务器为客户端提供服务,每个客户端也有服务,用于与其他客户端通信。

我在路由器上手动转发了服务器的服务端口,但是以后客户端安装后不能自己做。

有没有办法通过安装从客户端通过代码自动转发端口?

我的主要问题是 - 这种做法是否明智?是否需要恭敬地构建系统?

项目详情:

  1. C# - WCF,通信 - NetTcpBinding.
  2. 服务器在我的电脑上(家庭网络)。服务器的服务端口:8080.
  3. 客户端可以随处安装。客户端服务端口:8081.

*我不了解 IIS 技术,它对这种情况有帮助吗?

您所描述的模型听起来像一个 mesh 网络,通常您不希望客户端转发端口,无论是否自动转发。

如果绝对有必要,您可以实施 UPnP, there is an elaborate article here 描述如何在 .NET 中使用库来实现。请注意,您必须 select 一个不同的端口。

虽然我强烈建议选择不同的选项,但让服务器管理客户端之间的连接更易于管理且更安全。很少有有效的论据支持存在服务器而客户端有时会忽略它的模型:

  • 带宽,服务器可能无法以合理的吞吐量(即 torrent)处理所有数据
  • 安全,服务器可能只用于客户端更新(即带有更新程序的 P2P 聊天客户端)

听上去,你的项目也不适用。

编辑:因为您已经指出该项目基本上是一个 Torrent 客户端,所以我建议您阅读 UPnP 文章。