2

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

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

4

3 回答 3

3

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

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

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

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

很重要!

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

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

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

您可以通过将 ClientSocket 放在您机器上运行的模块上并将 ServerSocket 放在远程机器上运行的模块上来进行设计。

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

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

于 2014-09-25T20:56:14.377 回答
0

我会推荐 Internet Direct (Indy),因为它们在线程中运行良好,并且您可以指定每个连接的连接超时,以便您的监控应用程序能够比使用默认 OS 连接更快地获得“负面”测试结果暂停。

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

于 2014-09-26T06:42:01.060 回答