HTTP 服务器(C语言)传输图片出现问题

查看:652
本文介绍了HTTP 服务器(C语言)传输图片出现问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

我自己用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]

但是从控制台来看,已经把图片传输了。

解决方案

因为HTTP_INFO只是1024的大小。所以才会出现这个问题。

这篇关于HTTP 服务器(C语言)传输图片出现问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆