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