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