我正在使用Delphi 我有一个设备。 设备有以太网卡。我给设备的IP地址和端口(服务器IP地址)。 设备每秒都会使用tcp / ip向服务器发送数据。
我必须从服务器侦听设备。我有1200个设备 从一台服务器收听1200设备的最佳方式是什么? (多线程或其他方式)
答案 0 :(得分:3)
此处需要事件驱动的服务器。
忘掉Indy,并使用事件驱动(又称I / O完成)IP服务器。
Windows限制大约是2000个32位线程,因为每个线程保留2 MB的堆栈空间AFAIR。像Indy这样的服务器每个连接都会使用一个线程,因此只会浪费很多资源。
按照设计,I/O completion允许平衡所有传入的请求到一个小线程池。请参阅Is there a I/O completion port based component for Delphi?和Scalable Delphi TCP server implementation
答案 1 :(得分:2)
查看ICS这是一个互联网库,它允许您管理来自单个线程的许多连接。非常适合您的目的。