如何使用Indy组件发送二进制数据?哪一项最适合这项任务?我尝试使用TIdTcpClient
,但它只允许发送字符串。
我找到了一个问题here,但我没有得到它。
它说的是方法Write(TIdBytes)
,但答案对我来说并不清楚。他是否意味着写一些TIdBytes
的实例,以及如何将该实例与TIdTcpClient
连接?
感谢您的帮助。
答案 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。应该让你起来&马上跑步:))