我自己用C语言写一个HTTP服务器,但是在使用fopen,fread时候出现问题。传输不了图片。
void http_send_static(int sock_client,char *datapath){
char HTTP_HEADER[1024],HTTP_INFO[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!");
char buff[1024];
while((len=fread(buff,1,sizeof(buff),fd))>0){
printf(" buff %ld \n",sizeof(buff));
int fd;
fd=open(datapath,O_RDONLY);
char buff[1024];
while ((len=read(fd,buff,1024))>0){
char *datatype;
if(strstr(datapath,".html")){
datatype=http_content_type[0].value;//text/html
}else{
datatype=http_content_type[2].value;//image/jpeg
}
printf("datatype %s\n",datatype);
sprintf(HTTP_HEADER,http_res_tmpl,len,datatype);
len = sprintf(HTTP_INFO,"%s%s",HTTP_HEADER,buff);
send(sock_client,HTTP_INFO,len,0);
}
//fclose(fd);
}
浏览器打开网页时,图片显示错误,还有一部分的html的代码也没有传递成功。
![图片描述][1]
但是从控制台来看,已经把图片传输了。