返回信息流在某外企实习,公司上网时IP地址在美国(这是用了什么代理吗?)。
这几天要用win7+vs2012的环境实现一个小功能:使用libcurl库下载网页(如百度首页)的源码。很简单的功能,就是 http://www.cnblogs.com/moodlxs/archive/2012/10/15/2724318.html 中“3 网页下载保存实例”这一段代码。代码在公司电脑上无法运行,错误为无法连接百度网页的服务器(在我的个人电脑上同样环境下运行正常)。
于是我在公司电脑上进入cmd, ping www.baidu.com,结果如下:
Pinging www.a.shifen.com [180.76.3.151] with 32 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Ping statistics for 180.76.3.151:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
试了试网易、搜狐、新浪等网页,也是一样的结果。我明明可以上网,能打开上述网页,为什么无法ping成功呢?感觉问题就在这里。
PS:在我个人电脑上,ping成功,程序运行也正常。
这是一条镜像帖。来源:北邮人论坛 / cpp / #84036同步于 2014/11/11
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
【libcurl库相关求助】可以链接网站,为什么会ping失败?
en911
2014/11/11镜像同步10 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
libcurl不需要ping通的,只要能打开就行。我再公司的虚机上ping百度也不通,但是wget百度可以拿到数据,然后用curl库下载baidu页面是可以的。
小白求问,具体用的是哪些函数?我现在是用curl_easy_setopt(curl, CURLOPT_URL,"www.baidu.com")连接的,然后用curl_easy_setopt()设置传输选项。不知道你是如何wget的?
【 在 xiaoranMU 的大作中提到: 】
: libcurl不需要ping通的,只要能打开就行。我再公司的虚机上ping百度也不通,但是wget百度可以拿到数据,然后用curl库下载baidu页面是可以的。
【 在 en911 的大作中提到: 】
: 小白求问,具体用的是哪些函数?我现在是用curl_easy_setopt(curl, CURLOPT_URL,"www.baidu.com")连接的,然后用curl_easy_setopt()设置传输选项。不知道你是如何wget的?
:
wget是linux的一个命令,是一个http请求,和用网页打开百度差不多。
我的意思是:只要http能通就可以用curl连接,ping通不是必要条件。
你把代码发一下,咱们一起分析看看。
FILE *fp;//全局变量
size_t write_data(void *ptr, size_t size, size_t nmemb, void *stream) //write_data函数定义
{
int written = fwrite(ptr, size, nmemb, (FILE *)fp);
return written;
}
int _tmain(int argc, _TCHAR* argv[])
{
CURL *curl;
curl_global_init(CURL_GLOBAL_ALL);
curl = curl_easy_init();
curl_easy_setopt(curl, CURLOPT_URL, "www.baidu.com");
if (fopen_s(&fp, "result.txt", "w") != 0) //把百度源码保存到result.txt文档
{
printf("The file is not opened\n");
return 0;
}
//CURLOPT_WRITEFUNCTION 将后继的动作交给write_data函数处理
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
curl_easy_perform(curl); //运行失败时,这行代码返回7,意思是couldn't connect to server
curl_easy_cleanup(curl);
fclose(fp);
return 0;
}
【 在 xiaoranMU 的大作中提到: 】
: wget是linux的一个命令,是一个http请求,和用网页打开百度差不多。
: 我的意思是:只要http能通就可以用curl连接,ping通不是必要条件。
: 你把代码发一下,咱们一起分析看看。