资源简介
c语言 http client的实现。c源代码。绝对可以使用,已得到个人和他人验证。仅用于学习和交流使用。

代码片段和文件信息
大家都很熟悉HTTP协议的应用,因为每天都在网络上浏览着不少东西,也都知道是HTTP协议是相当简单的。每次用到FlashGet之类的下载软件下载网页,当用到那个“用FlashGet下载全部链接”时总觉得很神奇。
后来想想,其实要实现这些下载功能也并不难,只要按照HTTP协议发送request,然后对接收到的数据进行分析,如果页面上还有href之类的链接指向标志就可以进行深一层的下载了。HTTP协议目前用的最多的是1.1版本,要全面透彻地搞懂它就参考RFC2616文档吧。
下面是我用C语言编程写的一个http下载程序,希望对大家有些启发。源代码如下:
******* http客户端程序 httpclient.c ************/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
//////////////////////////////httpclient.c 开始///////////////////////////////////////////
/********************************************
功能:搜索字符串右边起的第一个匹配字符
********************************************/
char * Rstrchr(char * s char x) {
int i = strlen(s);
if(!(*s)) return 0;
while(s[i-1]) if(strchr(s + (i - 1) x)) return (s + (i - 1)); else i--;
return 0;
}
/********************************************
功能:把字符串转换为全小写
********************************************/
void ToLowerCase(char * s) {
while(*s) *s=tolower(*s++);
}
/**************************************************************
功能:从字符串src中分析出网站地址和端口,并得到用户要下载的文件
***************************************************************/
void GetHost(char * src char * web char * file int * port) {
char * pA;
char * pB;
memset(web 0 sizeof(web));
memset(file 0 sizeof(file));
*port = 0;
if(!(*src)) return;
pA = src;
if(!strncmp(pA “http://“ strlen(“http://“))) pA = src+strlen(“http://“);
else if(!strncmp(pA “https://“ strlen(“https://“))) pA = src+strlen(“https://“);
pB = strchr(pA ‘/‘);
if(pB) {
memcpy(web pA strlen(pA) - strlen(pB));
if(pB+1) {
memcpy(file pB + 1 strlen(pB) - 1);
file[strlen(pB) - 1] = 0;
}
}
else memcpy(web pA strlen(pA));
if(pB) web[strlen(pA) - strlen(pB)] = 0;
else web[strlen(pA)] = 0;
pA = strchr(web ‘:‘);
if(pA) *port = atoi(pA + 1);
else *port = 80;
}
/*********************************************************************
*filename: httpclient.c
*purpose: HTTP协议客户端程序,可以用来下载网页
*wrote by: zhoulifa(zhoulifa@163.com) 周立发(http://zhoulifa.bokee.com)
Linux爱好者 Linux知识传播者 SOHO族 开发者 最擅长C语言
*date time:2006-03-11 21:49:00
*Note: 任何人可以任意复制代码并运用这些代码,当然包括你的商业用途
* 但请遵循GPL
*********************************************************************/
int main(int argc char *argv[])
{
int sockfd;
char buffer[1024];
struct sockaddr_in server_addr;
struct hostent *host;
int portnumbernbytes;
char host_addr[256];
char host_file[1024];
char local_file[256];
FILE * fp;
char request[1024];
int send totalsend;
int i;
char * pt;
if(argc!=2)
{
fprintf(stderr“Usage:%s web-address\a\n“argv[0]);
exit(1);
}
printf(“parameter.1 is: %s\n“ argv[1]);
ToLowerCase(argv[1]);/
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 6255 2009-07-30 13:24 http.c
相关资源
- 操作系统c语言模拟文件管理系统844
- C语言开发实战宝典
- C++中头文件与源文件的作用详解
- C语言代码高亮html输出工具
- 猜数字游戏 c语言代码
- C语言课程设计
- 数字电位器C语言程序
- CCS FFT c语言算法
- 使用C语言编写的病房管理系统
- 通信过程中的RS编译码程序(c语言)
- 计算机二级C语言上机填空,改错,编
- 用回溯法解决八皇后问题C语言实现
- 简易教务管理系统c语言开发文档
- 操作系统课设 读写者问题 c语言实现
- 小波变换算法 c语言版
- C流程图生成器,用C语言代码 生成C语
- 3des加密算法C语言实现
- 简单的C语言点对点聊天程序
- 单片机c语言源程序(51定时器 八个按
- 个人日常财务管理系统(C语言)
- c语言电子商务系统
- 小甲鱼C语言课件 源代码
- 将图片转换为C语言数组的程序
- C语言实现的一个内存泄漏检测程序
- DES加密算法C语言实现
- LINUX下命令行界面的C语言细胞游戏
- 用单片机控制蜂鸣器播放旋律程序(
- 学校超市选址问题(数据结构C语言版
- 电子时钟 有C语言程序,PROTEUS仿真图
- 尚观培训linux许巍老师关于c语言的课
评论
共有 条评论