我想构建一个TCP / IP服务器,最多可以使用100个并发客户端,但仍然不知道如何开始.
至少我需要服务器到这个:
>听客户端,并将其存储在数组或列表中.
>对于每个客户端,它需要根据客户端状态接收和发送数据.
>有人连接或断开连接时,服务器应更新客户端列表.
>喜欢与GUI一起工作来管理它.
任何人都可以帮助我开始,我看着indy的样本,但他们没有帮助,也寻找大部分组件,但仍在搜索.
解决方法
您需要使用内部多线程的TidTCPServer.不需要你来管理线程.一切都是透明的,所以在你为一个客户端编写应用程序的方式中,(几乎)你将会为许多人写这个应用程序.请参阅OnConnect事件.有一个TidContext参数,里面有一个TThreadList.您可以使用该事件将您的客户端注册/添加到您的自定义阵列/列表,并使用OnDisconnect删除客户端.
OnExecute事件在服务器收到消息时被触发.使用其参数来读取发送的消息.
此外,您需要使用TidTCPClient的另一个应用程序,这将是您的客户端.在此应用程序中,您将设置服务器的地址(请参阅主机属性)以及应与服务器端口匹配的端口.您应该调用Connect(服务器运行时)并发送具有SendCmd方法的字符串. (另请参阅IOHandler.WriteLn,如果你想)
还有其他的事情,但我认为这足以让你开始.此外,您可以在Embarcadero的论坛中发布.Delphi.Winsock论坛,Indy团队成员正在浮动.或者你可以直接问.Delphi.Non-Technical,那些家伙会指导你.
另一种方法是DataSnap,它是一个比Indy更为面向对象的层(不要与DBX混淆),它提供了JSON,REST和其他的好东西.看到一个小的评论here.