首先,如果有人想編譯服務器並運行它問題用C編寫的服務器顯示BMP圖像
- 去http://pastebin.com/qPnE3jV0
- 編譯並運行它
- 去你的瀏覽器,鍵入http://localhost:7191/
我看着特別的功能是:
void serveHTML (int socket) {
char *message;
int i;
int j;
//image data
char bmpheader[54] = {0x42, 0x4D, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x13, 0x0B, 0x00, 0x00, 0x13, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
char bmpimagedata[36] = {0x07, 0x07, 0xFF, 0x07, 0x07, 0x07, 0x07, 0x07, 0xFF, 0xFF, 0x07, 0x07, 0x07, 0x07, 0x07, 0x66, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xFF, 0xFF, 0xFF, 0x46, 0x00, 0x00};
message = "HTTP/1.0 200 OK\r\n"
"Content-Type: image/bmp\r\n"
"Content-Length: 90\r\n";
printf ("%s\n", message);
write (socket, message, strlen(message));
// now send the contents of the web page to be displayed
i=0;
j=0;
while (i < 54) {
printf("%c", bmpheader[i]);
write (socket, &bmpheader[i], 1);
i++;
}
while (j < 36) {
printf("%c", bmpimagedata[j]);
write (socket, &bmpimagedata[j], 1);
j++;
}
}
我在這裏所做的存儲十六進制一個3x3的bmp文件的 數據分成兩個 陣列(用於 修改的便利性)的頭部和 圖像數據。我嘗試得到它 服務這個bmp在網絡瀏覽器上。 但它失敗。
我已經放置的printf的各地 地方打印的內容服務器 吐出......但是我想我 失去了一些東西(可能是 頁腳?)。
任何幫助將不勝感激,我拉我的頭髮,爲什麼它不起作用。
OMG非常感謝你!所以這就是那個小混蛋。 – stockoverflow 2011-04-14 13:23:05