2014-09-25 83 views
2

我正在寻找一个程序,将从一台计算机连接到许多计算机。有点像“命令中心”,您可以在一台PC上远程监控所有远程系统。多个ClientSocket组件可以放在一个表单上吗?

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

+0

什么样的监测?监控?系统性能?约会时间?您的“监控”权重将定义您对可扩展性的要求。 – 2014-09-26 02:06:47

+0

同意杰瑞。没有这些问题的答案,就有太多未知变量。 – Ampere 2014-09-27 12:32:02

回答

3

直接回答你的问题:是的,你可以做到这一点。

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

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

我不能告诉你更多关于设计的信息,因为你的问题并不清楚你想要建立什么(你究竟在监视什么)。

非常重要!

两个重要的注意事项要考虑到设计你的应用程序之前(包括相关者只有在远程计算机不在局域网(您通过Internet连接到它们)):

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

3.如果您确实拥有静态IP,您是否有域名,您可以将子域指向该IP? (+1)如果有一天你决定把你的服务器移到不同的IP地址,你也会有一场噩梦。 DNS可以解决这个问题。 – 2014-09-26 02:19:21

+2

问题是关于连接到主机(服务器),你的答案是关于连接到客户端。另外,打开防火墙端口不是“火箭科学”,我不会说它给了'*很多问题*'。 – mjn 2014-09-26 06:37:40

+1

@ mjn-当它是关于你自己的路由器时,它确实不是一个火箭科学(尽管我有两台拒绝工作的路由器......现在很多路由器都有错误的软件)。但看起来他需要将应用程序交付给随机用户。在这种情况下,由于路由器的原因,“点击并运行”解决方案是不可能的。他将不得不向用户解释如何配置路由器。每个路由器都有自己的设置程序。 – Ampere 2014-09-27 12:26:07

2

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

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

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

现在,如果你还是希望有你的机器上的多个ClientSockets那么作为祭坛说你需要一个多线程应用程序,每个线程负责一个ClientSocket的。

0

我建议互联网直接(印),因为它们在线程运行良好,并可以指定每个连接的连接超时,让您的监控应用将能够得到一个“负面”测试结果比快默认的OS连接超时。

而不是将它们放在窗体上,我会将每个客户端包装在运行内部监视线程的类中。最初更多的工作,但更容易保持相互独立。

相关问题