Я пытаюсь создать простое клиент-сервер-клиентское приложение с использованием компонента IdHTTP. Как использовать компонент IdHttp для отправки массива байтов из клиента1 в php-файл, расположенный на веб-сайте www.example.com, и этот файл php отправляет те же данные, которые будут потребляться клиентом2, используя IdHTTp? Может быть, я ошибаюсь здесь.Использование IdHTTP для отправки массива байтов в PHP
ответ
Для отправки данных от клиента1 на сервер я рекомендую использовать кодировку Base64. Таким образом, у вас есть обычная строка вместо байтового массива. Отправка строк с помощью IdHTTP проста. Альтернативой является многочастная форма данных (Java code here).
Для получения данных на client2: HTTP-клиенты не знают, когда есть данные на сервере. Асинхронный прием (push-сервер) - это функция нового протокола WebSocket, который является расширением HTTP, поэтому для клиентских и серверных сторон необходимы дополнительные расширения. Существуют открытые и коммерческие реализации протокола WebSocket для Delphi.
Если ваш клиент2 является обычным HTTP-клиентом, у него нет выбора, кроме как для непрерывного опроса данных с сервера. Для основных случаев использования я бы рекомендовал вместо TidHTTP компонент TIdTCPClient, который дает вам больше контроля над обработкой входящих данных. Клиент jst должен открыть соединение сокета на порту 80 сервера, отправить корректный HTTP-запрос и затем запустить цикл для получения ответа. Когда у сервера есть новые данные, PHP-скрипт начнет отправлять данные (возможно, даже без заголовков HTTP-ответов), а затем зашифрованные данные Base64.
Спасибо, я искал некоторые рекомендации по созданию приложения для разработчиков команды для бедных людей. – 2013-03-17 15:59:45
рад, что я мог бы помочь! – mjn
Что такое client2, другой HTTP-клиент? – mjn
Клиент 2 - это локальная машина, которая использует IdHTTp для получения «хрустких» данных с PHP. – 2013-03-17 15:40:08