为客户机-服务器通信构建TCP/IP服务器的最佳方法? 我将编写一个本地C++窗口服务,需要从客户桌面计算机收集并存储数据,可能是成千上万个。这些数据很简单,例如CPU%、内存和一些其他来自桌面上运行的客户端软件的数据

为客户机-服务器通信构建TCP/IP服务器的最佳方法? 我将编写一个本地C++窗口服务,需要从客户桌面计算机收集并存储数据,可能是成千上万个。这些数据很简单,例如CPU%、内存和一些其他来自桌面上运行的客户端软件的数据,c++,multithreading,sockets,tcp,C++,Multithreading,Sockets,Tcp,构建这种客户机-服务器通信的最佳方式是什么? 命名管道?TCP服务器/客户端?Windows套接字?WCF?还有别的吗? 或者最好在服务器上运行SQL Server,让客户端与数据库建立连接并以这种方式发送信息 我可以在服务器上的服务中运行多线程命名管道服务器,但我不希望在服务中为每个连接生成一个线程,该连接包含数千个客户端b/c,这将消耗太多的服务器子系统资源。客户端将位于本地网络上并通过WAN 感谢您的指导 您不需要从头开始编写服务器;您已经可以使用此处介绍的Performance Data

构建这种客户机-服务器通信的最佳方式是什么? 命名管道?TCP服务器/客户端?Windows套接字?WCF?还有别的吗? 或者最好在服务器上运行SQL Server,让客户端与数据库建立连接并以这种方式发送信息

我可以在服务器上的服务中运行多线程命名管道服务器,但我不希望在服务中为每个连接生成一个线程,该连接包含数千个客户端b/c,这将消耗太多的服务器子系统资源。客户端将位于本地网络上并通过WAN


感谢您的指导

您不需要从头开始编写服务器;您已经可以使用此处介绍的Performance Data Helper函数访问Windows性能计数器:


特别是,允许您指定可以位于远程计算机上的查询路径,如下所述:

标准解决方案是使用WMI。无需在客户端计算机上安装任何软件,可以远程完成。是否需要从客户端异步发送数据?我正在获取标准数据和其他非操作系统数据,并且我有一个在桌面上运行的客户端。我在WMI方面的经验是,仅仅查询十几台左右的计算机就需要占用大量资源。或者WCF更好?当然,数据可以异步发送。“数千个”是不明确的。每秒有多少个事件/数据?你如何利用收集到的数据?您愿意花费多少开发效果?它可以从简单的web+db转变为零售商制造的tcp服务器。没错,PDH工作得很好,但我没有提到我正在从桌面上运行的客户端程序获取非操作系统数据。我将编辑描述。很好,然后您可以使用Windows API提供计数器将数据输入系统,并使用PDH将数据输出到服务器。Docs:在一个进程中有数千个线程来轮询数千个客户机,这看起来相当大而且效率低下。