0

サーバー/クライアントの割り当てに取り組んでいます。サーバーはクライアント HTML、.txt、.jpg、.gif、および .xbm ファイルに渡して、localhost:8080/some アドレスに移動すると Web ブラウザーで開く必要があります... 私の HTML および .txt ファイルは次のように開きます魅力!ただし、.jpg と .gif はまったく表示されません。サーバーはファイルを見つけますが、.jpg または .gif の読み取りまたは表示に関しては、エラーが含まれているため表示できませんが、通常のブラウザーで開くと正常に動作します。「画像ファイルにはバイナリ データが含まれているため、画像ファイルを読み取り用に開くときは、必ずバイナリ モードで開いてください」という指示があります。私はちょうどそれをやったが、画像が表示されていないので、正しくやっているのだろうか. これは、html、txt、および画像形式に使用するファイルを読み取るための c のコードです。

void file_read(char *filename){
    //filename is actually the path
size_in = strlen(filename);
    //this is test display to see how the path was being read and since getting a 
    //from a web browser contains an extra character '/' in the beginning we need to 
    //to ignore it, 
printf("printf in file_read function %d\n", size_in);
wtg = filename + 1;
printf("printf in file_read function %s\n", wtg);

//file open and transfer in binary 'rb'
    fp= fopen (wtg, "rb");
    if (fp == NULL){
        printf("Could not open the file\n");
        exit(0);
    }
    fseek(fp , 0, SEEK_END);
    len = ftell (fp);
    rewind (fp);
    //allocate memory to contain the whole file:
    linehtml = calloc(1, len + 1);
    if (linehtml == NULL){fputs("Memory Error", stderr); 
    exit(2);}
    //copy the file into the buffer:
    if(1!=fread(linehtml, len, 1, fp)){
        fputs("entire read fails",stderr),exit(1);
    }
    fclose(fp);
    /*if (result != len) {
        printf("file lenght is %d\n\n", len);
        fputs ("Reading Error",stderr);
        exit(3);
    };*/
}

何か問題がありますか?バッファの長さが足りない?何か案は?

4

0 に答える 0