我想寫一個簡單的HTTP Web服務器使用C,但我試圖創建它時一直遇到問題。關於創建服務器套接字的一切似乎都很正常;基本上我只是不明白如何將東西發送到瀏覽器。下面是我的代碼在服務器循環建立與客戶套接字連接,然後送東西的網頁摘錄:簡單的Web服務器
for (;;) /* Run forever */
{
/* Set the size of the in-out parameter */
clntLen = sizeof(clntAddr);
/* Wait for a client to connect */
if ((clntSock = accept(servSock, (struct sockaddr *) &clntAddr,
&clntLen)) < 0)
DieWithError("accept() failed");
/* clntSock is connected to a client! */
printf("Handling client %s\n", inet_ntoa(clntAddr.sin_addr));
FILE *clientInput = fdopen(clntSock, "r");
char input[1000];
char html[BUFSIZE];
fgets(input, 1000, clientInput);
char *token_separators = "\t \r \n";
char *method = strtok(input, token_separators);
char *requestURI = strtok(NULL, token_separators);
char *httpVersion = strtok(NULL, token_separators);
...
char requestMessage[] = "HTTP/1.0 200 OK\r\n\r\n";
send(clntSock, requestMessage, strlen(requestMessage) + 1, 0);
...
}
我敢肯定,我的代碼工作的套接字創建和連接,它只是當我嘗試發送這個響應頭我的網頁只是不斷嘗試下載HTML。當我不發送響應頭,我試着發送正常的html,我的網頁工作。
我想我不明白的是爲什麼我的響應頭不起作用。
我認爲這有助於。有沒有更改內容類型的方法,以便顯示圖像? – KWJ2104
您必須指定正在發送的特定類型圖像的正確內容類型,例如:image/bmp,image/jpeg,image/gif,image/png等。 –