00001 /*************************************************************************** 00002 * _ _ ____ _ 00003 * Project ___| | | | _ \| | 00004 * / __| | | | |_) | | 00005 * | (__| |_| | _ <| |___ 00006 * \___|\___/|_| \_\_____| 00007 * 00008 * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al. 00009 * 00010 * This software is licensed as described in the file COPYING, which 00011 * you should have received as part of this distribution. The terms 00012 * are also available at https://curl.haxx.se/docs/copyright.html. 00013 * 00014 * You may opt to use, copy, modify, merge, publish, distribute and/or sell 00015 * copies of the Software, and permit persons to whom the Software is 00016 * furnished to do so, under the terms of the COPYING file. 00017 * 00018 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 00019 * KIND, either express or implied. 00020 * 00021 ***************************************************************************/ 00022 /* <DESC> 00023 * Use CURLOPT_RESOLVE to feed custom IP addresses for given host name + port 00024 * number combinations. 00025 * </DESC> 00026 */ 00027 #include <stdio.h> 00028 #include <curl/curl.h> 00029 00030 int main(void) 00031 { 00032 CURL *curl; 00033 CURLcode res = CURLE_OK; 00034 struct curl_slist *host = NULL; 00035 00036 /* Each single name resolve string should be written using the format 00037 HOST:PORT:ADDRESS where HOST is the name libcurl will try to resolve, 00038 PORT is the port number of the service where libcurl wants to connect to 00039 the HOST and ADDRESS is the numerical IP address 00040 */ 00041 host = curl_slist_append(NULL, "example.com:80:127.0.0.1"); 00042 00043 curl = curl_easy_init(); 00044 if(curl) { 00045 curl_easy_setopt(curl, CURLOPT_RESOLVE, host); 00046 curl_easy_setopt(curl, CURLOPT_URL, "http://example.com"); 00047 res = curl_easy_perform(curl); 00048 00049 /* always cleanup */ 00050 curl_easy_cleanup(curl); 00051 } 00052 00053 curl_slist_free_all(host); 00054 00055 return (int)res; 00056 }