怎么用C++实现对一个指定网址的源文件的获取,并保存到本地

如何用C++实现对一个指定网址的源文件的获取,并保存到本地
大二新生,初学MFC,原意是想通过套接字对指定网址的源文件进行获取,但是目前对套接字理解不深,通过看网上一些代码,似乎是通过创建一个线程来获取源文件的,但是具体的原理不懂,所以请CSDN上的各位大神,告诉小弟如何实现这个操作,以及其相应的原理是什么,小弟感激不尽。给分一定给力!!

------解决方案--------------------
C/C++ code
#include <iostream.h>
#include <string.h>
#include <afx.h>
#include <afxinet.h>

int main() 
{
    CInternetSession sess(_TEXT(""));
    CHttpFile* file = (CHttpFile*)sess.OpenURL(_TEXT("http://www.baidu.com")); 
    CString str;
    while (file->ReadString(str))
    {    
        cout << str.GetBuffer(0) << endl;
    }
    file->Close();
    cin.get();
    return 0;
}

------解决方案--------------------
C/C++ code

#include "winsock2.h"
#pragma comment(lib,"ws2_32.lib")
#include "iostream.h"
#include "stdio.h"

initsock()
{
    WSADATA wsData;
    if(WSAStartup(MAKEWORD(2,2),&wsData)==0)
        cout<<"success"<<endl;;
    return 0;}

initaddress(sockaddr_in *pa)
{
    pa->sin_family=AF_INET;
    pa->sin_port= htons(80); // 60002;
    hostent *hs=gethostbyname("www.baidu.com");
    if( hs==NULL)
    {
        cout<<"NO TIME"<<endl;return 0;
    }
    in_addr ip=*(in_addr *)hs->h_addr_list[0];
    pa->sin_addr=ip;
    cout<<"www.baidu.com   "<<inet_ntoa(ip)<<endl;
    return 0;
}

int main(int argc, char* argv[])
{
    initsock();
    sockaddr_in addr;
    initaddress(&addr);
    SOCKET licon;
    char buf[1024]={0};
    licon=socket(AF_INET,SOCK_STREAM,0);
    int q=connect(licon,(sockaddr *)&addr,sizeof(addr));
    if(q==SOCKET_ERROR)
    {
        cout<<GetLastError();
    }
    sprintf(buf,"GET http://www.baidu.com/index.html HTTP/1.0\r\n");
    send(licon,buf,strlen(buf),0);
    sprintf(buf,"host: www.baidu.com\r\n");
    send(licon,buf,strlen(buf),0);
    sprintf(buf,"\r\n");
    send(licon,buf,strlen(buf),0);
    int ret;
    ret=recv(licon,buf,sizeof(buf),0);
    cout<<"OOOOO"<<buf<<")))))))))))))"<<endl;
    return 0;
}

------解决方案--------------------
探讨

引用:
//首先在头文件中包含 #include <AFXINET.H>
CInternetSession session;
CHttpFile *pF=(CHttpFile *)session.OpenURL("http://www.cnblogs.com/VCdog/archive/2011/10/15/2212863.html");
CString strTem……

------解决方案--------------------
你加个断点看看到哪步报ASSERT
------解决方案--------------------
你放到MFC里面跑,命令行好像不包含这个头文件的
------解决方案--------------------
把这个博客里的例子放在VS里编译运行。
这个例子是微软的Tear例子,就是负责用HTTP下载资源的

至于如何保存,你就看一下文件操作吧。