2013-03-26 69 views
1

我有一个基本的indy TCP服务器和一个客户端,客户端向客户端发送消息到服务器。在服务器上的OnConnect事件中,客户端IP被添加到列表框中。我想在客户端上获得这个列表框,并且在客户端连接和断开连接时更新列表框。我对Indy组件不熟悉,不确定什么是最好的方法?Delphi Indy局域网聊天

+0

[使用Indy聊天的例子](http://www.devarticles.com/c/a/Delphi-Kylix/Creating-Chat-Application-with-Borland-DelphiIndy-The-Client/)[这是非常简单地找到它们](https://www.google.com.ua/search?client=opera&q=indy+chat+example&sourceid=opera&ie=utf-8&oe=utf-8&channel=suggest) – Abelisto 2013-03-26 04:31:20

+2

使用UDP广播,卢克! – OnTheFly 2013-03-26 06:05:24

+3

@ user539484这是一个非常好的传统发布消息,如“解决问题使用”卢克! :)这不是以任何方式讽刺的,但是当我们不回答“复制和粘贴”而不是“学习”时,这是一个好习惯。 BTW UDP协议有一个大问题:它不假定数据包到达另一个客户端。所以它必须通过HTTP,FTP(或任何其他更安全的协议)来实现。在我之前的评论中,第二个链接解释了如何做到这一点。 – Abelisto 2013-03-26 07:39:50

回答

1

TCP套接字在两个方向上工作 - TCP服务器可以在客户端用于连接到服务器的相同套接字上启动数据传输到客户端。

因此,要将活动连接列表推送到客户端,IdTCPServer只需迭代所有连接并使用Connection.IOHandler.WriteXXX方法发送信息。广播连接列表数据和向所有客户端广播新的聊天消息没有技术上的区别。

唯一的要求是数据需要一个指示消息类型的“消息类型指示符”(一个或多个头字节),可选地后跟消息体长度和数据。