[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Бинарный (не HTTP) запрос к скрипту PHP
VovaM44
Есть сложная задача smile.gif

Устройство (GPS-GPRS трекер) периодически обращается по IP адресу к WEB-серверу и попадает на index.php, "обращается" не по HTTP протоколу, а просто кидает бинарную посылку из 20 байтов и ждет байт с CRC (контрольной суммой по несложному алгоритму).

Как получить в скрипте PHP эти 20 байт? Ведь HTTP это некий парсинг входного ASCII на строчки типа HTTP_ACCEPT, HTTP_ACCEPT_CHARSET и тд. и тп.,
а тут бинарная посылка...
как ее получить для обработки в теле PHP и главное, как отдать "байт" CRC без всяких HTTP строчек.
THX



Спустя 1 час, 20 минут, 37 секунд (5.12.2010 - 06:46) vital написал(а):
Вы, видимо, слабо представляете о чем говорите.
Цитата
бращается по IP адресу к WEB-серверу

Цитата
"обращается" не по HTTP протоколу

Так не может быть. Он в любом случае обращается по хттп протоколу, по другому пхп не работает. Сервер на нем написать не возможно. В вашем случае использовать пхп это бред. Напишите просто демон(C++), который висит на каком-нить порту, слушает его и возвращает ответом crc полученной команды, там или чего угодно. Делов минут на 20.

Спустя 56 минут, 19 секунд (5.12.2010 - 07:42) VovaM44 написал(а):
вариант с демоном не подходит (требует VPS\VDS, dedicated, а то и полный collocation), эта тема даже не для дискуссии - все и так понятно.
Мне же нужно развернуть сервис на базе самых банальных виртуальных серверов с PHP, PERL и пр. более или менее стандартным набором.

Спустя 42 минуты, 18 секунд (5.12.2010 - 08:25) vital написал(а):
Цитата
Мне же нужно развернуть сервис на базе самых банальных виртуальных серверов с PHP, PERL и пр. более или менее стандартным набором.

Ну тогда из клиентской программы вам надо посылать именно http запрос в духе

POST http://www.site.ru/news.html HTTP/1.0\r\n
Host: www.site.ru\r\n
Referer: http://www.site.ru/index.html\r\n
Cookie: income=1\r\n
Content-Type: application/x-www-form-urlencoded\r\n
Content-Length: 35\r\n
\r\n
par1=val1&par2=val2
..
И получить ответ скрипта - удобнее всего в xml. В идеале - пишите веб-сервис(xml-rpc)

Спустя 4 часа, 24 минуты, 25 секунд (5.12.2010 - 12:49) linker написал(а):
Через сокеты, можно пихать что угодно.

Спустя 2 минуты, 41 секунда (5.12.2010 - 12:52) vagrand написал(а):
Советую попробовать принять данный в php скрипте при помощи кода:


$request = file_get_contents("php://input");

Спустя 6 минут, 26 секунд (5.12.2010 - 12:58) kirik написал(а):
Цитата (VovaM44 @ 4.12.2010 - 21:25)
а тут бинарная посылка...

Для вебсервера, ровно как и php все равно что в них пихают. Будь то бинарные данные (картинка, видео, музычка), или текстовые. Поэтому нужно по логам вебсервера вычислить каким методом трэкер пытается передать данные, а затем просто забрать их в php скрипте.

Если функционал трекера поддерживает общение именно с ВЕБ сервером (а не каким-нибудь специальным, со своим протоколом), то задача элементарная smile.gif

Спустя 1 час, 22 минуты, 49 секунд (5.12.2010 - 14:21) VovaM44 написал(а):
Цитата (vagrand @ 5.12.2010 - 09:52)
Советую попробовать принять данный в php скрипте при помощи кода:


$request = file_get_contents("php://input");

Вот это уже дельный совет! Спасибо

Спустя 46 минут, 59 секунд (5.12.2010 - 15:08) vital написал(а):
такие штучки проходят, только если php установлен в качестве CGI-обработчика. А не как модуль apache.
Что часто не так=>скрипт нифига не портабелен.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.