2016-01-09 2 views
1

Я пытаюсь выяснить, как я могу отправить на C++ с помощью curl easy, буфера BYTE[100], который может содержать 0x00 байт, в поле POST для скрипта PHP. Я также нуждаюсь в использовании техники сжатия HTML.Отправка необработанного байтового буфера

До этого я делал sprintf("%02X") для каждого байта, поэтому я мог отправлять их буквами, но теперь мне нужно минимизировать сетевой трафик, чтобы улучшить время ответа API.

Я пробовал в Google, но до сих пор нет ресурсов, близких к моему вопросу. Невозможно отправить его даже без поля POST? Мне просто нужно отправить свой луч BYTE [] и получить его из моего PHP-скрипта.

+0

И завершающее поле может принимать 0x00 байт? он закончит строку, пожалуйста, внимательно прочитайте мой вопрос. – NoobyLearner

ответ

1

Я, наконец, придумал решение PUT таким образом.

curl_easy_setopt(curl, CURLOPT_URL, szURL); 
curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L); 
curl_easy_setopt(curl, CURLOPT_READFUNCTION, reader); 
curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE, (curl_off_t)dwBinarySize); 

Ваша функция CURLOPT_READFUNCTION «читатель» должен кормить двоичные данные, посмотреть документацию на локон для получения дополнительной информации.

И вы получите двоичные данные, вы послали в PHP так:

$fPut = fopen("php://input", "r"); 

$bInput; 
while ($data = fread($fPut, 8192)) 
    $bInput .= $data; 

fclose($fPut);