德尔福印地局域网聊天

Posted

技术标签:

【中文标题】德尔福印地局域网聊天【英文标题】:Delphi Indy LAN Chat 【发布时间】:2013-03-26 03:35:59 【问题描述】:

我有一个基本的 indy TCP 服务器和一个客户端,客户端在其中向服务器发送消息。在服务器上的OnConnect 事件中,客户端 IP 被添加到列表框中。我想在客户端上获取此列表框,并在客户端连接和断开连接时更新列表框。我是 Indy 组件的新手,不确定最好的方法是什么?

【问题讨论】:

chat example using Indyand this is very simple to find them 使用 UDP 广播,卢克! @user539484 发布诸如“使用 解决问题”之类的消息真是不错的传统,Luke! :) 这绝不是讽刺,但当我们不给出“复制和粘贴”之类的答案而不是“学习这个”时,这是一种很好的做法。 BTW UDP 协议有一个大问题:它没有假设数据包到达了另一个客户端。所以它必须通过 HTTP、FTP(或任何其他更安全的协议)来实现。在我之前的评论中,第二个链接是解释如何做到这一点。 也许您会查看已经制作好的聊天程序,例如 IntranetChat 克隆 (dreamchat.sf.net) 或 IRC 客户端 (www.visualirc.net)。嗯,后者应该是复杂的方式,但 iChat 可能是一个不错的起点。 UDP 广播只能在大多数简单的非结构化网络中工作,实际上你根本不需要服务器。如果您依赖服务器 - 那么您应该要求服务器列出客户端并路由消息。 【参考方案1】:

TCP 套接字双向工作 - TCP 服务器可以在客户端用于连接服务器的同一套接字上向客户端发起数据传输。

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

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

【讨论】:

以上是关于德尔福印地局域网聊天的主要内容,如果未能解决你的问题,请参考以下文章

仿QQ局域网聊天软件

socket TCP 实现局域网内聊天

局域网聊天带照片

免费局域网聊天软件飞秋——非常好用的软件

浅析局域网聊天软件的能力

java简易的局域网聊天工具