原先用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。请问类似于这个问题我该怎么做???
鉴于你提出了“但是windows下gethostbyname()只能识别像www.baidu.com这样的url”这样的问题,我可以推断出你不熟悉 SOCKET 编程,不知道 HTTP 是什么,网络知识还比较匮乏,由于你要访问的网址是以“HTTPS”开头的,因此,我建议你下载 libcurl 的源码来直接使用,同时你还可以从它的源码中学习。
谢谢,学生我网络确实这块很菜。但由于项目很赶,要求是这星期上交审核,所以前辈能不能指点一二?待项目完成后,仔细学习下这方面内容。麻烦前辈了。
@东子同学: 关键是这部分内容很多,特别是 HTTPS,这个不是一句话两句话能说清楚的,所以我让你下载 libcurl,那里面有源码,有教程,你照着抄就行了,我不可能全程陪着你给你讲下一步干什么,为什么这么干,懂吗?
@Launcher: 嗯,知道了,谢谢前辈。
你可以抓包观察一下,发送了哪些数据。一般来说,
GET /index.aspx HTTP1.1
HOST:xxx.xxx.com
这样类似的一个请求,然后接受就可以收到相关的数据了。
深受前辈启发,自己已经解决。std::string Request = "GET /s?wd="+ TargetUrl + " HTTP/1.1\r\nHOST:www.baidu.com\r\nConnection:Close\r\n\r\n";