【问题标题】:How To send Array or vector (has contact list ) from IdTCPServer to IdTCPClient (indy10)如何将数组或向量(有联系人列表)从 IdTCPServer 发送到 IdTCPClient (indy10)
【发布时间】:2011-04-17 17:01:31
【问题描述】:

1) 现在我正在编写 IM 聊天系统,我遇到了一些问题,如何将包含信息的矢量从服务器发送到客户端

2) 有什么方法可以在两个客户端之间进行通信吗??

我使用 CBC2010 - Indy10

【问题讨论】:

  • 细节取决于你的vector中有什么样的信息和数据类型,是那些简单的数据类型、对象还是记录?您的矢量项目是否具有流媒体功能?你有一个准备好的例程来读/写每个对象/记录到流吗?整个向量?
  • 2) 无法在两个纯客户端之间进行直接通信,如果您的客户端正在减少传入通信(不是 Chanel 上的回调),那么他是服务器(不是纯客户端)
  • @Najem 我的意思是服务器来自它的两个客户端,我的意思是每个客户端都有线程,,是使服务器从特定线程连接发送数据的任何方式......
  • 我知道你 - 和我一样 - 不是以英语为母语的,但是你能不能运行一个拼写检查器,使用更少的缩写,并且在你所问的内容中少一点密集?这样,更多的人会真正理解您的要求,并且您会得到更多的回应。

标签: delphi c++builder indy10


【解决方案1】:

通过 TCP 进行通信的基本原理是从客户端向服务器发送字节,并在客户端从服务器接收字节。

您可以为这些字节赋予意义,或者为您包装一些东西。

有多种可能性和协议可供选择。

在此基础上,您可以使用 UDP(不可靠,但几乎没有开销,但非常适合广播)和 TCP(更可靠,因此开销更大,但更易于使用)。

在 TCP 之上经常使用的传输协议是 HTTP,特别是因为它很容易通过代理服务器获取。

除此之外,您还可以使用 XML+SOAP 或 JSON+REST,这使得从/到您的底层对象的转换变得更加容易。

总而言之,有很多选项可供选择。

一个简单的开始是Delphi chat example at delphi.about.com。那肯定会让你继续前进。

【讨论】:

  • 谢谢,在 indy10 如何知道 AContext 属于特定用户名以及如何连接到其他用户名...
  • @IYad:我不确定我是否理解您的评论。在我提到的 Delphi 聊天室示例中演示了连接到另一个客户端。 AContext belong to specific username 是什么意思?您可能应该将其添加到您的问题中。
猜你喜欢
  • 2020-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-03
相关资源
最近更新 更多