【问题标题】:Can multiple ClientSocket Components can be placed on a Form?一个Form上可以放置多个ClientSocket组件吗?
【发布时间】:2014-09-25 19:10:43
【问题描述】:

我正在寻找一个程序,它可以从一台计算机连接到多台计算机。有点像“指挥中心”,您可以在其中在一台 PC 上远程监控所有远程系统。

我的计划是在一个表单上有多个客户端套接字。他们将远程连接到个人电脑。因此,他们可以向他们请求信息以显示在窗口上。远程 PC 将成为主机。这可能吗?

【问题讨论】:

  • 什么样的监控?监视?系统性能?约会时间?您的“监控”权重将定义您对可扩展性的要求。
  • 同意杰瑞。如果没有这些问题的答案,就会有太多未知变量。

标签: delphi networking tcp serversocket tclientsocket


【解决方案1】:

直接回答您的问题:是的,您可以这样做。

长答案:是的,你可以这样做,但你确定你的设计是正确的吗? 您确定要创建并行连接,每个客户端一个?可能你没有!如果是,那么您可能希望在单独的线程中运行它们。

如果您想不时发送一些命令(并且您没有进行某种持续的视频监控),为什么不只使用一个连接并在客户端之间“切换”?

我无法告诉您有关设计的更多信息,因为您的问题并不清楚您想要构建什么(您究竟在“监控”什么)。

非常重要!

在设计您的应用程序之前要考虑两个重要的注意事项(仅当远程计算机不在 LAN 中(您通过 Internet 连接到它们)时才相关):

  1. 如果远程计算机作为服务器运行,您将遇到 很多 问题来解释您的客户(如果他们通过路由器连接(并且他们可能)连接到 Internet)如何设置路由器和软件防火墙。例如,如果远程计算机正在侦听来自您的命令,则在端口 1234(例如)上,路由器中的防火墙将默认阻止从“外国”计算机(来自您)到该端口的任何连接尝试。
  2. 如果您的远程计算机作为客户端运行,它们将如何知道主服务器的 IP(您的 IP)。你有静态 IP 吗?

【讨论】:

  • 3.如果您确实有一个静态 IP,您是否有一个可以将子域指向该 IP 的域名? (+1) 如果有一天您决定将服务器移动到不同的 IP,您也会做噩梦。 DNS 可以解决这个问题。
  • 问题是关于连接到主机(服务器),你的答案是关于连接到客户端。另外,打开防火墙端口不是“火箭科学”,我不会说它会带来'*很多问题*'。
  • @mjn-当它是关于你自己的路由器时,它确实不是一门火箭科学(即使我有两个拒绝工作的路由器......今天很多路由器都有错误的软件)。但看起来他需要将应用程序交付给随机用户。在这种情况下,由于路由器,“点击并运行”解决方案是不可能的。他必须向用户解释如何配置路由器。每个路由器都有自己的设置程序。
  • @mjn-正如解释的那样,如果他希望客户端连接到他的“主”计算机(他是服务器),那么他的计算机需要有一个静态 IP。
【解决方案2】:

您真正需要的是在您的机器上运行的模块上的一个 ServerSocket。 您的所有远程 PC 都将通过它们各自的 ClientSocket 连接到它。

您可以通过将 ClientSocket 放在您机器上运行的模块上,将 ServerSocket 放在远程机器上运行的模块上,以其他方式进行设计。

但是你最终会为每个ServerSocket创建一个ClientSocket,如果你增加远程服务器的数量怎么办。

现在,如果您仍想在您的机器上拥有多个 ClientSocket,那么正如 Altar 所说,您可能需要一个多线程应用程序,其中每个线程负责一个 ClientSocket。

【讨论】:

    【解决方案3】:

    我会推荐 Internet Direct (Indy),因为它们在线程中运行良好,并且您可以指定每个连接的连接超时,以便您的监控应用程序能够比使用默认操作系统连接超时。

    我不会将它们放在表单上,​​而是将每个客户端包装在一个运行内部监控线程的类中。最初的工作量更大,但更容易保持彼此独立。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-06
      • 2021-02-06
      • 1970-01-01
      • 1970-01-01
      • 2022-01-08
      • 1970-01-01
      • 2012-01-03
      • 2017-10-11
      相关资源
      最近更新 更多