我正在尝试使用 IdHTTP 组件构建一个简单的客户端 - 服务器 - 客户端应用程序。如何使用 IdHttp 组件将字节数组从 client1 发送到位于 www.example.com 的 php 文件,并让该 php 文件使用 IdHTTp 发送相同的数据以供 client2 使用?也许我在这里走错了路。
user1593881
问问题
947 次
1 回答
1
为了将数据从 client1 发送到服务器,我建议使用 Base64 编码。这样你就有一个普通的字符串而不是一个字节数组。使用 IdHTTP 发送字符串很简单。另一种方法是多部分表单数据(此处为 Java 代码)。
在client2上接收数据:HTTP客户端不知道服务器上什么时候有数据。异步接收(服务器推送)是新 WebSocket 协议的一个特性,它是 HTTP 的扩展,因此需要在客户端和服务器端进行特定的扩展。Delphi 有 WebSocket 协议的开源和商业实现。
如果你的 client2 是一个普通的 HTTP 客户端,它除了不断地从服务器轮询数据外别无选择。对于基本用例,我建议使用 TIdTCPClient 组件而不是 TidHTTP,它可以让您更好地控制传入数据的处理。客户端jst需要在服务器的80端口上打开一个socket连接,发送一个格式良好的HTTP请求,然后运行一个循环来接收响应。当服务器有新数据时,PHP 脚本将开始发送数据(甚至可能没有 HTTP 响应头),然后是 Base64 编码的数据。
于 2013-03-17T15:43:25.243 回答