我正在使用 Delphi 我有一个设备。设备有以太网卡。我给设备一个 IP 地址和端口(服务器 IP 地址)。设备每秒使用 tcp/ip 向服务器发送数据。
我必须从服务器监听设备。我有 1200 台设备从一台服务器监听 1200 台设备的最佳方式是什么?(多线程或其他方式)
我正在使用 Delphi 我有一个设备。设备有以太网卡。我给设备一个 IP 地址和端口(服务器 IP 地址)。设备每秒使用 tcp/ip 向服务器发送数据。
我必须从服务器监听设备。我有 1200 台设备从一台服务器监听 1200 台设备的最佳方式是什么?(多线程或其他方式)
事件驱动的服务器是这里的要求。
忘记 Indy,使用事件驱动(也称为 I/O 完成)IP 服务器。
对于 32 位,Windows 限制约为 2000 个线程,因为每个线程保留 2 MB 的堆栈空间,AFAIR。像 Indy 这样的服务器每个连接都会使用一个线程,所以这只会浪费资源。
按照设计,I/O 完成允许将所有传入请求平衡到一个小线程池。请参阅Delphi 是否有基于 I/O 完成端口的组件?和可扩展的 Delphi TCP 服务器实现
查看ICS,它是一个 Internet 库,可让您管理来自单个线程的多个连接。非常适合您的目的。