如何使用 Indy 组件发送二进制数据?其中哪一个最适合这项任务?我试过使用TIdTcpClient
,但它只允许发送字符串。
我在这里找到了解决该问题的方法,但我不明白。它说的是 method Write(TIdBytes)
,但答案对我来说并不清楚。他的意思是写到某个实例TIdBytes
,以及如何将该实例与TIdTcpClient
?
谢谢你的帮助。
您引用的页面不能很好地重现这些消息。这是雷米真正写的:
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
.
Write 是 TCPClient 的一种方法(或在 Delphi 中调用的任何方法)。这是您想要做的工作代码:http: //delphi.about.com/od/internetintranet/l/aa012004a.htm。应该让您立即启动并运行:)