代码之家  ›  专栏  ›  技术社区  ›  AviD

Delphi网络编程

  •  4
  • AviD  · 技术社区  · 18 年前

    我知道Indy库,但不确定要使用哪些组件以及如何构造它。我猜我需要一个客户端连接的服务器来接收和分发消息。。。?有什么样的样品可以让我开始吗?

    是否还有其他组件集或技术我应该看一下?

    7 回复  |  直到 18 年前
        1
  •  4
  •   mj2008    18 年前

    简单的答案是,Delphi中可用的标准协议(和其他工具)不允许反向通知。我在一个我想使用SOAP的项目中对此进行了研究。他们都假设客户端请求服务器,服务器响应,就是这样。

    对我来说,解决方案是RemObjects SDK。这允许您向客户端发送通知,并且通知可以包含您喜欢的任何数据(就像客户端到服务器一样)。我自己使用SuperTCP连接,但它也与其他人一起工作。它仍然可以为必须使用它的客户机提供SOAP接口,但对于您同时控制客户机和服务器的地方,它工作得非常好。

        2
  •  2
  •   Jim McKeeth    18 年前

    1. 有一个中央服务器,上面有一个*TIdTCPServer侦听*。然后每个客户端都有一个 TIdTCPClient 读块 等待 对于 要写入的服务器 给每个等待的客户。这几乎是所有客户端的即时通知。
    2. TIdTCPServer李斯特蛋白 加油。然后每个客户端都有一个 在上面。那些客户可以 “平” 服务器请求定期更新(使用会话令牌维护状态)。间隔的频率决定通知的速度。当一个客户机需要通知其他客户机时,它只通知服务器。然后服务器使用 消息队列 列出所有活动客户端会话并为每个会话添加通知。然后,在下一次每个客户端连接时,它会向其发出通知并将其从队列中删除。
    3. 会话表 在数据库中,每个客户端定期更新,以确保它们有一个活动会话,并在断开连接时将其自身删除。您将需要一个删除失效会话的维护过程。那么你有一个 客户端可以为每个当前活动会话写入一行更新。然后,其他客户端可以定期ping该表,以查看其会话是否有任何挂起的通知,如果有,则可以读取这些通知,对其执行操作,然后删除它们。
    4. 某种程度上 点对点 这种方法是,客户端通过数据库中的信息相互了解,然后直接相互连接并通知或请求通知(取决于防火墙和NAT配置)。有点复杂,但可能。

    显然,实现的选择将取决于您的设置和需要。为了达到最佳效果,必须进行修整。

    您需要的组件是 TIdTCPServer TIdTCPClient (发送者)。它们都在Delphi的印地图书馆中。

        3
  •  1
  •   IB IB    18 年前

    ICS组件来自 http://www.overbyte.be 你很好。 a、 )比印地更好的兼容性 b、 )明信片器皿 好的例子和支持。使用TClientSocket和TServerSocket

        4
  •  1
  •   Fabricio Araujo    17 年前

    FirebirdSQL项目将通知的概念用作向客户端发送字符串的服务器-客户端连接。为此,db服务器使用另一个端口。并要求客户端注册通过API调用接收某种类型的通知。

    你可以用同样的想法。

        5
  •  1
  •   APZ28    15 年前

    服务器: http://www.rabbitmq.com/download.html 做一个谷歌客户端或实现自己

    干杯

        6
  •  0
  •   Jorge Córdoba    18 年前

    您应该能够为相同的目的使用多播UDP。唯一的区别是从每个客户端加入多播组。

    http://en.wikipedia.org/wiki/IP_Multicast

    http://en.wikipedia.org/wiki/Internet_Group_Management_Protocol

        7
  •  0
  •   Silverio Diquigiovanni    15 年前

    您可以观看weonlydo wodVPN组件,该组件允许您创建一个健壮的UDP打孔,并获得一个涉水端口或一个普通VPN(带有一个已完成的网络适配器),以便您可以连接NAT后面的两台PC。

    我用这个控件来控制我们的通讯程序,效果很好。