我用浏览器的原理写了个程序,读取网页中的数据,然后在本地生成个文件,然后把得到的数据存进去,可是,我读HTML ASP都可以,我现在想读一个EXE文件,得到的数据看起来没什么不同,可运行的时候出现一个DOS窗口就马上关上了,请问这是为什么?怎么解决????

解决方案 »

  1.   

    先用你的一个exe文件做做实验,看是否能down下来。如果可以,那证明你down的exe文件本身就是那么执行的
      

  2.   

    文件大小不一样,我生成的文件大一点,我的同事成功过,他说是我读数据的时候破坏了文件的结构或是破坏了EXE文件的PE什么?但他没告诉我怎么做?谢谢大家指教指教我怎么做
      

  3.   


     从HTTP服务器接受文件的控制台程序源代码 详细信息 < Internet与WEB服务 >  基于HTTP协议从HTTP服务器得到文件,使用SOCKET1.1[代码性质] VC完整应用程序代码
    [代码作者] 
    [文件大小] 13K 
    [更新日期] 2002-3-3 20:28:00 
    [下载次数] 2401 相关评论 
    http://www.vckbase.com/code/downcode.asp?id=363
      

  4.   


     利用事件异步通知从HTTP服务器接收文件的程序代码 详细信息 < Internet与WEB服务 >  取得HTTP服务器上的文件,使用了事件对象以及WSASelectEvent来处理异步通知。[代码性质] VC完整应用程序代码
    [代码作者] 
    [文件大小] 13K 
    [更新日期] 2002-3-3 20:28:00 
    [下载次数] 2157 相关评论 
    http://www.vckbase.com/code/downcode.asp?id=366
      

  5.   

    HTTP下载类 2002-4-25
    http://www.vchelp.net/vchelp/view_article.asp?ft=2&article_id=291
    基于Winsock2的支持断点续传和SOCKS代理的HTTP下载类
    AmHttpUtilities 2002-4-25
    http://www.vchelp.net/vchelp/view_article.asp?ft=1&article_id=308
    封装了GET POST方法的HTTP类
      

  6.   

    这些都是HTTP下载,我是不明白怎么能读EXE文件的时候,不破坏EXE文件的头结构?
    非常感谢大家,问题一解决都有分:)
      

  7.   

    可运行的时候出现一个DOS窗口就马上关上了控制台程序就是这样运行的
      

  8.   

    楼上给你的答案都不用看了你出问题的原因很简单,你没按照二进制方式接收数据去看看你是不是用char*或者string/CString保存了数据
    是不是用strcpy复制了数据
      

  9.   

    fantiyu(fantiyu) 你说的很对,我应该怎么解决呢????希望指教,
    我用了BYTE 还是不行
      

  10.   

    CStdioFile file;
    file.Open("Helbreath.exe",CFile::modeReadWrite);
    CFile a;
    a.Open("Helbreath1.exe",CFile::modeCreate | CFile::modeReadWrite);

    int n;
    BYTE b[1000];
    n=file.GetLength();
    int nn=0;
    for(nn=0;nn<100000;nn++)
    {
    n=file.Read(b,1000);
    if(n)
    {
                a.Write(b,n);
    }
    else
    {
                break;
    }
    }
    这是代码