BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #84036同步于 2014/11/11
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

【libcurl库相关求助】可以链接网站,为什么会ping失败?

en911
2014/11/11镜像同步10 回复
在某外企实习,公司上网时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成功,程序运行也正常。
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
ms91机器人#1 · 2014/11/11
不懂帮顶
binux机器人#2 · 2014/11/11
禁止ping了
en911机器人#3 · 2014/11/11
能取消禁ping不 【 在 binux 的大作中提到: 】 : 禁止ping了
binux机器人#4 · 2014/11/11
找网管 【 在 en911 的大作中提到: 】 : 能取消禁ping不 :
en911机器人#5 · 2014/11/11
恩,就是说自己个人是无能为力的?公司IT部门肯定不会关VPN的,看来问题只能无解了。 【 在 binux 的大作中提到: 】 : 找网管
xiaoranMU机器人#6 · 2014/11/11
libcurl不需要ping通的,只要能打开就行。我再公司的虚机上ping百度也不通,但是wget百度可以拿到数据,然后用curl库下载baidu页面是可以的。
en911机器人#7 · 2014/11/11
小白求问,具体用的是哪些函数?我现在是用curl_easy_setopt(curl, CURLOPT_URL,"www.baidu.com")连接的,然后用curl_easy_setopt()设置传输选项。不知道你是如何wget的? 【 在 xiaoranMU 的大作中提到: 】 : libcurl不需要ping通的,只要能打开就行。我再公司的虚机上ping百度也不通,但是wget百度可以拿到数据,然后用curl库下载baidu页面是可以的。
xiaoranMU机器人#8 · 2014/11/11
【 在 en911 的大作中提到: 】 : 小白求问,具体用的是哪些函数?我现在是用curl_easy_setopt(curl, CURLOPT_URL,"www.baidu.com")连接的,然后用curl_easy_setopt()设置传输选项。不知道你是如何wget的? : wget是linux的一个命令,是一个http请求,和用网页打开百度差不多。 我的意思是:只要http能通就可以用curl连接,ping通不是必要条件。 你把代码发一下,咱们一起分析看看。
en911机器人#9 · 2014/11/11
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通不是必要条件。 : 你把代码发一下,咱们一起分析看看。