0

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

我在这里找到了解决该问题的方法,但我不明白。它说的是 method Write(TIdBytes),但答案对我来说并不清楚。他的意思是写到某个实例TIdBytes,以及如何将该实例与TIdTcpClient

谢谢你的帮助。

4

2 回答 2

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接受各种大小整数类型的方法零碎地编写数据,或者您可以将数据复制到 aTMemoryStream中,然后将其传递给Write.

于 2010-06-02T10:07:10.563 回答
0

Write 是 TCPClient 的一种方法(或在 Delphi 中调用的任何方法)。这是您想要做的工作代码:http: //delphi.about.com/od/internetintranet/l/aa012004a.htm。应该让您立即启动并运行:)

于 2010-06-02T09:57:16.027 回答