构建多线程TCP/IP服务器

Del*_*Dev 10 delphi tcp delphi-2010

我想构建一个TCP/IP服务器,最多可以使用100个并发客户端,但仍然不知道如何开始.

至少我需要服务器这个:

  1. 收听客户端,并将它们存储在数组或列表中.
  2. 对于每个客户端,它需要根据客户端状态接收和发送数据.
  3. 当有人连接或断开连接时,服务器应更新客户端列表.
  4. 更喜欢使用GUI作为服务来管理它.

任何人都可以帮助如何开始,我看了indy样本,但他们没有帮助,也寻找大多数组件,但仍在搜索.

Joh*_*mas 8

你需要使用TidTCPServer里面多线程的.您无需管理线程.一切都是透明的,所以在为一个客户端编写应用程序的方式中,(几乎)就像为许多客户端编写应用程序一样.看看OnConnect活动.有一个TidContext参数里面有一个TThreadList.您可以使用该事件"注册"/将客户端添加到自定义阵列/列表并OnDisconnect删除客户端.

OnExecute服务器收到消息时会触发该事件.使用其参数来读取发送的消息.

此外,您需要另一个将成为您的客户的应用程序TidTCPClient.在此应用程序中,您将设置服务器的地址(请参阅主机属性)以及应与服务器的地址匹配的端口.你应该调用Connect(当服务器运行时)并发送你有SendCmd方法的字符串.(也看看IOHandler.WriteLn你是否想要)

还有其他的东西,但我认为这足以让你开始.你也可以在.Delphi.Winsock论坛上的Embarcadero论坛上发帖,其中Indy团队成员正在浮动.或许您可以直接询问.Delphi.Non-Technical,那里的人会指导您.

另一种方法是DataSnap,它是一个比Indy更面向对象的层(不要与DBX混淆),它提供了JSON,REST和其他好东西.请参阅此处的小评论.