サーバー/クライアントの割り当てに取り組んでいます。サーバーはクライアント 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);
};*/
}
何か問題がありますか?バッファの長さが足りない?何か案は?