Libcurl. возможность обмена двоичными данными без создания внешнего сокета - PullRequest
0 голосов
/ 11 марта 2020

Я пытался использовать curl для подключения некоторых серверов по IP-адресам, но эти серверы имеют собственный двоичный протокол, и мои попытки не дали результата. Как я понял из документации curl, чтобы решить мою задачу, мне нужно создать внешний сокет и использовать следующий подход:

/* libcurl will internally think that you connect to the host
* and port that you specify in the URL option. */
curl_easy_setopt(curl, CURLOPT_URL, "http://99.99.99.99:9999");
/* call this function to get a socket */
curl_easy_setopt(curl, CURLOPT_OPENSOCKETFUNCTION, opensocket);
curl_easy_setopt(curl, CURLOPT_OPENSOCKETDATA, &sockfd);

/* call this function to set options for the socket */
curl_easy_setopt(curl, CURLOPT_SOCKOPTFUNCTION, sockopt_callback);

res = curl_easy_perform(curl);

curl_easy_cleanup(curl);

Основное осложнение для меня - у меня нет возможности создавать и использовать внешние сокеты. Как я могу подключаться, отправлять и получать любые двоичные данные на / с сервера (без http / ftp .. и т. Д.)? Библиотека Curl внутри использует сокеты и оболочки над сокетами. Как я могу использовать эти curl-оболочки над сокетами для отправки / получения любых двоичных данных для решения моей задачи? Возможно ли это?

Спасибо.

...