想实现利用http隧道传输文件,在公网上,这个应该能实现的,因为好多网站上有 HTTP下载 之类的。我对http协议还一知半解,那位做过这方面的兄弟给介绍下怎么做。有源码参考的更好。[email protected].谢谢了。

解决方案 »

  1.   

    技术上容易实现,关键是作为HTTP的服务端必须做相应的处理,把请求变成文件的上传下载
      

  2.   

    这个是从该网站查询数据,返回一个html文件,希望对你有点启示!
    ---------------------------------------------------------------------------
    这是个html页面,网站:http://www.ip138.com:8080/search.asp 
    在VC中我如何编写代码获取返回的信息,例如在对话框模式下,一个Edit,一个Button,在一个Edit中输入手机号码,点击Button后要求返回查询手机号码的信息! 
    这下面的该论坛的一个达人写的一个方法: 
    void CCMDlg::Post(CString &csResponse,const char *szServer,INTERNET_PORT &nPort,const char *szObject,const char *szData,DWORD &dwHttpStatus,BOOL bAutoRedirect) 

    //参数说明: 
    /* 
    csResponse:返回的数据 
    szServer:服务器 
    nPort:端口 
    szObject:URI 
    szData:正文内容 
    dwHttpStatus:状态码 
    bAutoRedirect:是否自动转向 
    */ 
    CInternetSession *pSession=NULL; 
    CHttpConnection *pConnection=NULL; 
    CHttpFile *pHttpFile=NULL; try{ 
    pSession=new CInternetSession(NULL,1,INTERNET_OPEN_TYPE_PRECONFIG); 
    pConnection=pSession->GetHttpConnection(szServer,nPort,NULL,NULL); 
    DWORD dwFlag=INTERNET_FLAG_EXISTING_CONNECT ¦INTERNET_FLAG_RELOAD ¦INTERNET_FLAG_DONT_CACHE; if(!bAutoRedirect) 

    dwFlag=dwFlag ¦INTERNET_FLAG_NO_AUTO_REDIRECT; 

    pHttpFile=pConnection->OpenRequest(CHttpConnection::HTTP_VERB_POST,szObject,szServer,1,NULL,NULL,dwFlag); pHttpFile->AddRequestHeaders("Content-Type: appliction/x-www-form-urlencoded",HTTP_ADDREQ_FLAG_ADD_IF_NEW,-1L); pHttpFile->SendRequest(NULL,0,(LPVOID)szData,strlen(szData)); 
    if(pHttpFile) 

    if(pHttpFile->QueryInfoStatusCode(dwHttpStatus)!=0) 

    //dwHttpStatus=200; 
    if(dwHttpStatus <400) 

    int nRead=0; 
    LPSTR pBuffer=new char[1024]; 
    do{ 
    nRead=pHttpFile->Read(pBuffer,1023); 
    if(nRead!=0) 

    pBuffer[nRead]=0; 
    csResponse+=pBuffer; 

    }while(nRead!=0); 
    if(pBuffer) 

    delete pBuffer; 
    pBuffer=NULL; 




    }catch(CInternetException *e) 

    e->Delete(); 

    catch(...) 
    { } 
    if(pHttpFile!=NULL) 

    pHttpFile->Close(); 
    delete pHttpFile; 

    if(pConnection!=NULL) 

    pConnection->Close(); 
    delete pConnection; 

    if(pSession!=NULL) 

    pSession->Close(); 
    delete pSession; 


      
    我在下面的这个函数中响应按钮点击事件 
    void CCMDlg::OnBnClickedOk() 

             
           CString csResponse;  
           CString sPhone; 
           GetDlgItemText(IDC_EDIT1,sPhone); 
    INTERNET_PORT nPort=8080; 
    DWORD dwRes=0; 
    //AfxMessageBox(sPhone); 
    CString strData="mobileform:"; 
    strData+=sPhone; 
    Post(csResponse,"www.ip138.com",nPort,"search.asp",strData,dwRes,TRUE); 
    //AfxMessageBox(csResponse); 
    SetDlgItemText(IDC_EDIT1,csResponse); 
      

  3.   

    http://topic.csdn.net/t/20040627/12/3126011.html
      

  4.   

    客户端和服务器都要自己处理,麻烦。----
    因为好多网站上有 HTTP下载 之类的
    ----
    这个是因为很多网站有http和ftp来存储文件,为了区分所以说点这个http下载,点那个ftp下载,点另外个bt下载。