例如www.aaa.com/a.zip
我想把这个文件下载到我的机器上,而不用登陆www.aaa.com如何处理?

解决方案 »

  1.   

    直接用WinSocket
    或者用CHttpFile类
      

  2.   

    我实用的c不能用mfc,怎么办?多谢。
      

  3.   

    SOCKET APIconnect()...
    recv()...
    close()...
      

  4.   

    那就直接用socket吧.
    ...
      int iResult;
      WSADATA ws;
      SOCKET s;
      sockaddr_in addr;
      hostent *host;  WSAStartup(0x0101,&ws);
      s = socket(AF_INET,SOCK_STREAM,0);
      addr.sin_family = AF_INET;
      addr.sin_port = htons(80);
      host = gethostbyname('http://www.microsoft.com');//从主机名(非IP地址)获得主机的信息
      memcpy((char FAR *)&(addr.sin_addr),host->h_addr,host->h_length);  if(SOCKET_ERROR == connect(s,(struct sockaddr *)&addr, sizeof(addr)))
      {
      // 连接失败
        WSACleanup();
        return false;
      }
      else
      {
      // 连接成功    timeval timeout;
        timeout.tv_sec=m_timeout;
        timeout.tv_usec=0;//select的超时设置
        fd_set fds;//用于阻塞函数select的结构
        FD_ZERO(&fds);
        FD_SET(s,&fds);    iResult = select(0, NULL,&fds, NULL, &timeout);
        if(iResult<=0)
        {
          WSACleanup();
          return false;
        }
        iResult = send(s, 'GET /index.htm HTTP/1.1\r\nHost:www.microsoft.com\r\nAccept:*/*\r\nPragma: nocache\r\nConnection: Close\r\n\r\n',TempStr.Length(),0);//发送Get请求
        if(iResult==SOCKET_ERROR)
        {
          WSACleanup();
          return false;
        }........
      //等着服务器返回你要的文件吧.
    do
    {
          iResult = select(0, &fds, NULL, NULL, &timeout);
          if(iResult<=0)
          {
            WSACleanup();
            return false;
          }
    ...
          iResult = recv(s,strBuffer,sizeof(strBuffer),0);
    //保存内容到文件
    ...
    while(iResult)  WSACleanup();
      return true;
      

  5.   

    头文件:
    #include <winsock.hpp>