WEB开发网
开发学院软件开发VC 直接用socket实现HTTP协议(下载专用) 阅读

直接用socket实现HTTP协议(下载专用)

 2010-05-27 20:39:44 来源:WEB开发网   
核心提示:取得回应头后,如果回应码为2XX并且“Content-Length”的值不等于0就表示可以接收下载文件数据了,直接用socket实现HTTP协议(下载专用)(3),接下来的工作就很简单了,调用 CHttpSocket::Recevie()直到接收的数据长度等于“Content-Len

取得回应头后,如果回应码为2XX并且“Content-Length”的值不等于0就表示可以接收下载文件数据了,接下来的工作就很简单了,调用 CHttpSocket::Recevie()直到接收的数据长度等于“Content-Length”的值就可以了 。

一个完整的使用过程由以下几个步骤组成:

调用AfxParseURL()分析URL得到Server和下载路径;

调用CHttpSocket::Socket()创建套接字;

调用CHttpSocket::Connect()连接服务器;

调用CHttpSocket::FormatRequestHeader()格式化请求头;

调用CHttpSocket::SendRequest()向服务器发送请求头;

调用CHttpSocket::GetServerState()得到回应状态码;

调用CHttpSocket::GetField("Content-Length")得到下载文件的大小;

调用CHttpSocket::Receive()接收数据直到数据接收完成;

本文附带源代码还包括了一个使用 CHttpSocket 实现下载功能的例子工程。注意,所有的调用都是阻塞的,所以最好为一个下载任务创建一个线程 ,否则会导致界面无法响应用户输入。程序运行界面如下图所示:

上一页  1 2 3 

Tags:直接 socket 实现

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接