用Indy通过TCP \ IP发送二进制数据,怎么样?

时间:2010-06-02 08:52:25

标签: delphi tcp indy tcpclient

如何使用Indy组件发送二进制数据?哪一项最适合这项任务?我尝试使用TIdTcpClient,但它只允许发送字符串。

我找到了一个问题here,但我没有得到它。 它说的是方法Write(TIdBytes),但答案对我来说并不清楚。他是否意味着写一些TIdBytes的实例,以及如何将该实例与TIdTcpClient连接?

感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

您引用的页面不能很好地重现这些消息。以下是雷米写的:

  

SendCmd()仅适用于文本命令/参数。你将会拥有   退出SendCmd()后发送二进制数据,服务器必须这样做   在将响应发送回客户端后读取二进制数据。对于   例如:

     

---客户--- ---

begin
  IdTCPClient1.SendCmd('DoIt', 200);
  // send binary data, such as with Write(TStream) or Write(TIdBytes)...
end;

他所谈论的Write方法是TIdIOHandler类的成员。您的TIdTCPConnection对象在其IOHandler属性中有一个该类的实例,实际上这就是SendCmd函数用于发送其字符串的内容。

表示法Write(TIdBytes)表示使用Write方法接受TIdBytes参数作为其输入。

如果二进制数据已经在流或动态字节数组中,那么您可以将其中一个直接传递给Write方法。如果您提供文件名,还有WriteFile方法将发送整个外部文件。如果您使用流版本,则可以选择自动包含流的长度。

如果您已经没有其中一个结构中的数据,那么您可以使用接受各种大小的整数类型的Write方法逐个编写数据,也可以将数据复制到{ {1}}然后将其传递给TMemoryStream

答案 1 :(得分:0)

写入是TCPClient的一种方法(或Delphi中调用的任何方法)。以下是您要执行的操作代码:http://delphi.about.com/od/internetintranet/l/aa012004a.htm。应该让你起来&马上跑步:))