Delphi 如何通过TCP\IP使用Indy发送二进制数据?

Delphi 如何通过TCP\IP使用Indy发送二进制数据?,delphi,tcp,indy,tcpclient,Delphi,Tcp,Indy,Tcpclient,如何使用Indy组件发送二进制数据?他们中哪一个最适合这项任务?我尝试使用TIdTcpClient,但它只允许发送字符串 我找到了那个问题的答案,但我不明白。 它说的是方法Write(TIdBytes),但我不清楚答案。他是不是想写一些TIdBytes的实例,以及如何将该实例连接到TIdTcpClient 感谢您的帮助。Write是TCPClient的一种方法(或在Delphi中调用的任何方法)。以下是您要执行的操作的工作代码:。应该可以让您立即启动并运行:)Write是TCPClient的一种

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

我找到了那个问题的答案,但我不明白。 它说的是方法
Write(TIdBytes)
,但我不清楚答案。他是不是想写一些
TIdBytes
的实例,以及如何将该实例连接到
TIdTcpClient


感谢您的帮助。

Write是TCPClient的一种方法(或在Delphi中调用的任何方法)。以下是您要执行的操作的工作代码:。应该可以让您立即启动并运行:)

Write是TCPClient的一种方法(或在Delphi中调用的任何方法)。以下是您要执行的操作的工作代码:。很快就会启动并运行:)

您引用的页面无法很好地重现消息。以下是雷米的真实写照:

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

---客户---

他提到的
Write
方法是
TIdIOHandler
类的成员。您的
TIdTCPConnection
对象在其
IOHandler
属性中有一个该类的实例,实际上,
SendCmd
函数使用该实例发送其字符串

表示法
Write(TIdBytes)
意味着使用
Write
方法,该方法接受一个
TIdBytes
参数作为其输入

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


如果您的数据尚未包含在其中一个结构中,那么您可以使用
write
方法逐段写入数据,该方法接受各种大小的整数类型,或者,您可以将数据复制到
TMemoryStream
中,然后将其传递到
Write

您引用的页面无法很好地再现消息。以下是雷米的真实写照:

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

---客户---

他提到的
Write
方法是
TIdIOHandler
类的成员。您的
TIdTCPConnection
对象在其
IOHandler
属性中有一个该类的实例,实际上,
SendCmd
函数使用该实例发送其字符串

表示法
Write(TIdBytes)
意味着使用
Write
方法,该方法接受一个
TIdBytes
参数作为其输入

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


如果您的数据尚未包含在这些结构中,那么您可以使用接受各种大小的整数类型的
write
方法逐段写入数据,或者您可以将数据复制到
TMemoryStream
中,然后将其传递给
write

实际上,这不是有效的代码。至少对印地10号来说不是
Write
不再是
TIdTCPClient
的方法。谢谢你,Mike,问题是我的Indy版本中没有TIdTCPClient的这种方法……Indy的文档也没有说明这些方法。。。我相信你给出的例子很老,而且不是最新的。我不是说你可以复制粘贴代码,但我个人觉得编写自己的代码非常有帮助(C++Builder 2009)。哦,好吧。事实上,这不是有效的代码。至少对印地10号来说不是
Write
不再是
TIdTCPClient
的方法。谢谢你,Mike,问题是我的Indy版本中没有TIdTCPClient的这种方法……Indy的文档也没有说明这些方法。。。我相信你给出的例子很老,而且不是最新的。我不是说你可以复制粘贴代码,但我个人觉得编写自己的代码非常有帮助(C++Builder 2009)。哦,好吧。谢谢Rob,由于页面的格式,我把它弄糊涂了。谢谢你的帮助。谢谢Rob,这个页面的格式让我很困惑。谢谢你的帮助。
begin
  IdTCPClient1.SendCmd('DoIt', 200);
  // send binary data, such as with Write(TStream) or Write(TIdBytes)...
end;