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

回到顶部