客户管理解析之客服端的实现Word文档格式.docx
- 文档编号:13873548
- 上传时间:2022-10-14
- 格式:DOCX
- 页数:5
- 大小:16.79KB
客户管理解析之客服端的实现Word文档格式.docx
《客户管理解析之客服端的实现Word文档格式.docx》由会员分享,可在线阅读,更多相关《客户管理解析之客服端的实现Word文档格式.docx(5页珍藏版)》请在冰豆网上搜索。
netdb.h>
arpa/inet.h>
ctype.h>
//////////////////////////////httpclient.c开始
///////////////////////////////////////////
/********************************************
功能:
搜索字符串右边起的第壹个匹配字符
********************************************/char*Rstrchr(char*s,charx){
inti=strlen(s);
if(!
(*s))return0;
while(s[i-1])if(strchr(s+(i-1),x))return(s+(i-1));
elsei--;
return0;
}
把字符串转换为全小写
********************************************/voidToLowerCase(char*s){while(s&
&
*s){*s=tolower(*s);
s++;
/**************************************************************
从字符串src中分析出网站地址和端口,且得到用户要下载的文件
***************************************************************/voidGetHost(char*src,char*web,char*file,int*port){
char*pA;
char*pB;
memset(web,0,sizeof(web));
memset(file,0,sizeof(file));
*port=0;
(*src))return;
pA=src;
if(!
strncmp(pA,"
http:
//"
strlen("
)))pA=src+strlen("
)
;
elseif(!
https:
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;
elsememcpy(web,pA,strlen(pA));
if(pB)web[strlen(pA)-strlen(pB)]=0;
elseweb[strlen(pA)]=0;
pA=strchr(web,'
:
'
if(pA)*port=atoi(pA+1);
else*port=80;
intmain(intargc,char*argv[])
{
intsockfd;
charbuffer[1024];
structsockaddr_inserver_addr;
structhostent*host;
intportnumber,nbytes;
charhost_addr[256];
charhost_file[1024];
charlocal_file[256];
FILE*fp;
charrequest[1024];
intsend,totalsend;
inti;
char*pt;
if(argc!
=2)
fprintf(stderr,"
Usage:
%sweb-address/a/n"
argv[0]);
exit
(1);
printf("
parameter.1is:
%s/n"
argv[1]);
ToLowerCase(argv[1]);
/*将参数转换为全小写*/printf("
lowercaseparameter.1is:
GetHost(argv[1],host_addr,host_file,&
portnumber);
/*分析网址、端口、文件名等*/
webhost:
host_addr);
printf("
hostfile:
host_file);
portnumber:
%d/n/n"
portnumber);
if((host=gethostbyname(host_addr))==NULL)/*取得主机IP地址*/
Gethostnameerror,%s/n"
strerror(errno));
/*客户程序开始建立sockfd描述符*/if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)/*建立SOCKET连接*/
SocketError:
%s/a/n"
/*客户程序填充服务端的资料*/bzero(&
server_addr,sizeof(server_addr));
server_addr.sin_family=AF_INET;
server_addr.sin_port=htons(portnumber);
server_addr.sin_addr=*((structin_addr*)host->
h_addr);
/*客户程序发起连接请求*/
if(connect(sockfd,(structsockaddr*)(&
server_addr),sizeof(structsockaddr))==-1)/*连接网站*/
ConnectError:
sprintf(request,"
GET/%sHTTP/1.1/r/nAccept:
*/*/r/nAccept-Language:
zh-cn/r/n/
User-Agent:
Mozilla/4.0(compatible;
MSIE5.01;
WindowsNT5.0)/r/n/
Host:
%s:
%d/r/nConnection:
Close/r/n/r/n"
host_file,host_addr,portnumber);
%s"
request);
/*准备request,将要发送给主机*/
/*取得真实的文件名*/if(host_file&
*host_file)pt=Rstrchr(host_file,'
elsept=0;
memset(local_file,0,sizeof(local_file));
if(pt&
*pt){if((pt+1)&
*(pt+1))strcpy(local_file,pt+1);
elsememcpy(local_file,host_file,strlen(host_file)-1);
elseif(host_file&
*host_file)strcpy(local_file,host_file);
elsestrcpy(local_file,"
index.html"
localfilenametowrite:
%s/n/n"
local_file);
/*发送http请求request*/send=0;
totalsend=0;
nbytes=strlen(request);
while(totalsend<
nbytes){send=write(sockfd,request+totalsend,nbytes-totalsend);
if(send==-1){printf("
senderror!
exit(0);
}totalsend+=send;
%dbytessendOK!
/n"
totalsend);
fp=fopen(local_file,"
a"
fp){
createfileerror!
/nThefollowingistheresponseheader:
i=0;
/*连接成功了,接收http响应,response*/while((nbytes=read(sockfd,buffer,1))==1)
if(i<
4){if(buffer[0]=='
/r'
||buffer[0]=='
/n'
)i++;
elsei=0;
%c"
buffer[0]);
/*把http头信息打印于屏幕上*/
else{
fwrite(buffer,1,1,fp);
/*将http主体信息写入文件*/i++;
if(i%1024==0)fflush(fp);
/*每1K时存盘壹次*/
fclose(fp);
/*结束通讯*/close(sockfd);
exit(0);
zj@zj:
~/C_pram/practice/http_client$lshttpclienthttpclient.czj@zj:
~/C_pram/practice/http_client$./httpclienthttp:
///parameter.1is:
///
///webhost:
portnumber:
80
GET/HTTP/1.1
Accept:
*/*
Accept-Language:
zh-cn
WindowsNT5.0)Host:
Connection:
Closelocalfilenametowrite:
index.html163bytessendO
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 客户 管理 解析 客服 实现