HTTP服务器 send函数有问题
代码在下面
void http_send_static(int sock_client,char *datapath){ char HTTP_HEADER[1024];
int len;
FILE *fd;
printf("%s\n",datapath);
if((fd=fopen(datapath,"rb"))<0){
printf("error open\n");
}
if(fd == NULL)
printf("Open file Error!");
fseek(fd,0,SEEK_END);
int data_len=ftell(fd);
printf("datalen %d",data_len);
rewind(fd);
char* buff=(char *)malloc((data_len)*sizeof(char)+1);
char* HTTP_INFO=(char *)malloc((data_len)*sizeof(char)+1024);
memset(buff,0,data_len+1);
fread(buff,sizeof(char),data_len,fd);
char *datatype;
if(strstr(datapath,".html")){
datatype=http_content_type[0].value;
}else{
datatype=http_content_type[2].value;
}
printf("datatype %s\n",datatype);
sprintf(HTTP_HEADER,http_res_tmpl,len,datatype);
len = sprintf(HTTP_INFO,"%s%s",HTTP_HEADER,buff);
printf("%d \n",len);
if(send(sock_client,HTTP_INFO,sizeof(HTTP_INFO),0)<=0)
printf("error send");
printf("\nend");
fclose(fd);
}
这里datalen是数据的长度,封装之后的长度是1435。再结束send函数之后,会答应end。所以程序一直停在send()函数。 运行的图片如下图
回答:
send当中的sizeof(HTTP_INFO)只是HTTP_INFO指针的大小,不是实际数据的长度,数据长度应为len
以上是 HTTP服务器 send函数有问题 的全部内容, 来源链接: utcz.com/p/195348.html