首页 新闻 会员 周边

c++怎么用socket获取网页源码?

0
悬赏园豆:30 [已解决问题] 解决于 2015-08-12 14:09

  原先用wininet实现过这个功能。但wininet都把网络通信的细节都封装好了。所以想着怎么用原生的win API来实现这个功能。写的时候遇到点麻烦,还望前辈指教。在用SOCKADDR_IN的sin_addr.s_addr时,要传入一个类似于(127.0.0.1)ip地址。我想得到这个https://www.baidu.com/s?&wd=www.sina.com的源码,但是windows下gethostbyname()只能识别像www.baidu.com这样的url。请问类似于这个问题我该怎么做???

东子同学的主页 东子同学 | 初学一级 | 园豆:64
提问于:2015-08-11 22:02
< >
分享
最佳答案
0

鉴于你提出了“但是windows下gethostbyname()只能识别像www.baidu.com这样的url”这样的问题,我可以推断出你不熟悉 SOCKET 编程,不知道 HTTP 是什么,网络知识还比较匮乏,由于你要访问的网址是以“HTTPS”开头的,因此,我建议你下载 libcurl 的源码来直接使用,同时你还可以从它的源码中学习。

收获园豆:30
Launcher | 高人七级 |园豆:45045 | 2015-08-12 09:24

谢谢,学生我网络确实这块很菜。但由于项目很赶,要求是这星期上交审核,所以前辈能不能指点一二?待项目完成后,仔细学习下这方面内容。麻烦前辈了。

东子同学 | 园豆:64 (初学一级) | 2015-08-12 09:32

@东子同学: 关键是这部分内容很多,特别是 HTTPS,这个不是一句话两句话能说清楚的,所以我让你下载 libcurl,那里面有源码,有教程,你照着抄就行了,我不可能全程陪着你给你讲下一步干什么,为什么这么干,懂吗?

Launcher | 园豆:45045 (高人七级) | 2015-08-12 09:37

@Launcher: 嗯,知道了,谢谢前辈。

东子同学 | 园豆:64 (初学一级) | 2015-08-12 09:41
其他回答(2)
0

你可以抓包观察一下,发送了哪些数据。一般来说,

GET /index.aspx HTTP1.1

HOST:xxx.xxx.com

 

这样类似的一个请求,然后接受就可以收到相关的数据了。

Supper_litt | 园豆:827 (小虾三级) | 2015-08-12 09:15
0

深受前辈启发,自己已经解决。std::string Request = "GET /s?wd="+ TargetUrl + " HTTP/1.1\r\nHOST:www.baidu.com\r\nConnection:Close\r\n\r\n";

东子同学 | 园豆:64 (初学一级) | 2015-08-12 14:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册