首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以在一个表单上放置多个ClientSocket组件吗?

可以在一个表单上放置多个ClientSocket组件吗?
EN

Stack Overflow用户
提问于 2014-09-25 19:10:43
回答 3查看 448关注 0票数 2

我想写一个程序,将连接到许多计算机从一台计算机。有点像“命令中心”,你可以在一台电脑上远程监控所有的远程系统。

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-09-25 20:26:06

直截了当地回答你的问题:是的,你可以这样做。

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

如果你想不时地发送一些命令(而且你不是在做某种持续的视频监控),你为什么不使用一个连接和客户端之间的“切换”呢?

我不能告诉您更多关于设计的内容,因为从您的问题中不清楚您想要构建什么(确切地说,您正在“监视”什么)。

非常重要!

在设计应用程序之前,要考虑两个重要的注意事项(只有当远程计算机不在局域网(您通过Internet连接到它们)时,这两个相关信息才会被考虑在内):

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

Stack Overflow用户

发布于 2014-09-25 20:56:14

实际上,您需要的是运行在机器上的模块上的一个ServerSocket。您的所有远程PC将通过他们的个人ClientSocket连接到其中。

您可以将ClientSocket放在运行在您的计算机上的模块上,将ServerSocket放在运行在远程机器上的模块上,从而使您的设计完全相反。

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

现在,如果您仍然希望在您的机器上有多个ClientSockets,那么就像where说的那样,您可能需要一个多线程应用程序,其中每个线程负责一个ClientSocket。

票数 2
EN

Stack Overflow用户

发布于 2014-09-26 06:42:01

我推荐Internet (Indy),因为它们在线程中工作得很好,而且您可以为每个连接指定一个连接超时,这样您的监控应用程序将能够比默认的OS连接超时更快地获得一个“负”测试结果。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26046280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档