Я пытался использовать 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-оболочки над сокетами для отправки / получения любых двоичных данных для решения моей задачи? Возможно ли это?
Спасибо.