您现在的位置: 天下网吧 >> 网吧天地 >> 天下码农 >> 微信小程序 >> 正文

用VC++实现http代理

2008-11-6来自网络佚名

  为了帮网友些个用http下载动画的程序,临时在网上翻了翻,看看有没有利用http代理来下载的例子。结果,似乎很多人都愿意去转载一个有头无尾的例子,还美其名曰“我在查阅RFC文档和相关资料后,特总结一些TCP协议穿透代理服务器的程序片断,希望对大家有所帮助。”

      如果真的想帮助大家,为什么不说的详细一些?

      无奈之下,自己去翻rfc文档,找了些资料,写了这个利用http代理来下载文件的资料

      代码如下:

      (1)一些基本变量

    SOCKET HTTPSocket; // 主socket
    strUCt sockaddr_in SocketAddr; // address socket
    struct sockaddr_in BindSocket; // for bind


    int m_nRecvTimeout; // recieve timeout
    int m_nSendTimeout; // send timeout

    WSADATA wsaData;

    // 要下载文件部分。好像在BindSocket.sin_addr.s_addr = inet_addr (strHost);时,只能使用ip地址,所以了。。。

    // 如果谁知道更好的方法,别忘了告诉我一下。

    CString strHost="111.111.111.111 ";
    CString DownLoadAddress="http://www.aitenshi.com/bbs/images/";
    CString hostFile="logo.gif";
    int HttpPort=80;

 

      (2)一些函数,用来取得http头,和获取文件大小

    int GetFileLength(char *httpHeader)
    {
    CString strHeader;
    int local;
    strHeader=(CString)httpHeader;
    local=strHeader.Find("Content-Length",0);
    local+=16;
    strHeader.Delete(0,local);
    local=strHeader.Find("\r");
    strHeader.SetAt(local,'\0');

    char temp[30];
    strcpy(temp,strHeader.GetBuffer(strHeader.GetLength()));
    return atoi(temp);
    }

    int GetHttpHeader(SOCKET sckDest,char *str)
    {
    BOOL m_bResponsed=0;
    int m_nResponseHeaderSize;

    if(!m_bResponsed)
    {
    char c = 0;
    int nIndex = 0;
    BOOL bEndResponse = FALSE;
    while(!bEndResponse && nIndex < 1024)
    {
    recv(sckDest,&c,1,0);
    str[nIndex++] = c;
    if(nIndex >= 4)
    {
    if(str[nIndex - 4] == '\r' && str[nIndex - 3] == ''
    && str[nIndex - 2] == '\r' && str[nIndex - 1] == '')
    bEndResponse = TRUE;
    }
    }
    m_nResponseHeaderSize = nIndex;
    m_bResponsed = TRUE;
    }

    return m_nResponseHeaderSize;

    }


      (3)用来发送的部分

欢迎访问最专业的网吧论坛,无盘论坛,网吧经营,网咖管理,网吧专业论坛 https://bbs.txwb.com

关注天下网吧微信/下载天下网吧APP/天下网吧小程序,一起来超精彩

本文来源:来自网络 作者:佚名

声明
声明:本站所发表的文章、评论及图片仅代表作者本人观点,与本站立场无关。若文章侵犯了您的相关权益,请及时与我们联系,我们会及时处理,感谢您对本站的支持!联系邮箱:support@txwb.com,系统开号,技术支持,服务联系QQ:1175525021本站所有有注明来源为天下网吧或天下网吧论坛的原创作品,各位转载时请注明来源链接!
天下网吧 网吧天下