Имеется ОС Linux, libcurl 7.68.0, 2 интерфейса с доступом в 2 разных подсети.
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 102 0 0 enp0s31f6
0.0.0.0 192.168.0.1 0.0.0.0 UG 103 0 0 enx00a0c6000000
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 enp0s31f6
192.168.0.0 0.0.0.0 255.255.255.0 U 103 0 0 enx00a0c6000000
192.168.1.0 0.0.0.0 255.255.255.0 U 102 0 0 enp0s31f6
Из с++ кода, с помощью cUrl и опции CURLOPT_INTERFACE делаю Get запрос на внешний домен, но запрос почему-то не выполняется. CURLOPT_VERBOSE показывает следующее:
* Trying %корректный.внешний.ip.адрес%:443...
* Name '192.168.0.2' family 2 resolved to '192.168.0.2' family 2
* Local port: 0
* Connection timed out after 15001 milliseconds
* Closing connection 0
* Hostname %нужный-домен.ком% was found in DNS cache
* Trying %корректный.внешний.ip.адрес%:443...
* Hostname 192.168.0.2 was found in DNS cache
* Name '192.168.0.2' family 2 resolved to '192.168.0.2' family 2
* Local port: 0
* Connection timed out after 15001 milliseconds
* Closing connection 1
* Hostname %нужный-домен.ком% was found in DNS cache
* Trying %корректный.внешний.ip.адрес%:443...
* Hostname 192.168.0.2 was found in DNS cache
* Name '192.168.0.2' family 2 resolved to '192.168.0.2' family 2
* Local port: 0
* Connection timed out after 15000 milliseconds
* Closing connection 2
И так повторяется без конца.
curl_easy_setopt(this->Curl, CURLOPT_INTERFACE, "192.168.0.2"); // пробовал так
curl_easy_setopt(this->Curl, CURLOPT_INTERFACE, "enx00a0c6000000"); // и так тоже
Если установить 192.168.0.1 шлюзом по умолчанию и сделать запрос, то запрос выполнится успешно. Так же успешно выполняется запрос если в CURLOPT_INTERFACE указать адрес из текущей подсети по умолчанию или вовсе убрать эту опцию. В чем может быть проблема?
а если так
CURL *curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "https://....");
if(curl_easy_setopt(curl, CURLOPT_INTERFACE, "if!enx00a0c6000000")==CURLE_INTERFACE_FAILED) printf("oops...");
ret = curl_easy_perform(curl);
curl_easy_cleanup(curl);
}
If the parameter starts with "if!" then it is treated as only as interface name and no attempt will ever be named to do treat it as an IP address or to do name resolution on it. If the parameter starts with "host!" it is treated as either an IP address or a hostname. Hostnames are resolved synchronously. Using the if! format is highly recommended when using the multi interfaces to avoid allowing the code to block. If "if!" is specified but the parameter does not match an existing interface, CURLE_INTERFACE_FAILED is returned from the libcurl function used to perform the transfer.
если не сложно приведите рабочий кусок кода, попробовать воспроизвести
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Я новичок в программировании,нужно написать цикл в котором сумма будет считаться как 1-1/2+1/3-1/4+1/5-1/6 и тд,не совсем понимаю как менять знак с + на - в цикле
Найти произведение элементов одномерного массива, состоящего из N элементовРазмер массива и его элементы вводятся с клавиатуры
пишу интерпретатор командЕсть входной файл, в котором даны инструкции вида: