我正在尝试编写这个函数,它将创建一个HTML文档,我可以在其中编写404错误消息,文件名在函数参数中给定。
fprintf
调用给了我分段错误,不过核心转储。
你觉得我做错了什么吗?
void notFoundResponse(int clientSocket, char* fileName){
char response[30] = {"HTTP/1.0 404 Not Foundrnn"};
char buffer[256];
FILE* file = fopen("404.html", "w+");
fprintf(file, "<HTML><HEAD><TITLE>404 Not Found</TITLE></HEAD><BODY><H1>Not Found</H1>The requested URL %s was not found on this server.<P>rn" , fileName);
write(clientSocket, response, strlen(response) + 1);
fread(buffer, 256, 1, file);
write(clientSocket, buffer, strlen(buffer) + 1);
fclose(file);
}
有更多信息吗?
尝试将char response[30] = {"HTTP/1.0 404 Not Foundrnn"};
修改为char response[64] = "HTTP/1.0 404 rnContent-Type: text/htmlrnrn"
也许您没有指定内容类型,所以HTTP连接在您发送响应后关闭。我认为您应该指定内容类型来告诉客户端您稍后将发送一个html文件。
如果您非常确定这是fprintf segfault,请忽略我的回答
如果我的答案是严重错误的,请评论并让我知道我会删除答案。