gpt4 book ai didi

c - 在 C 网络服务器中返回 404error.html 页面

转载 作者:太空宇宙 更新时间:2023-11-04 07:55:12 27 4
gpt4 key购买 nike

我用C语言编写了一个web服务器,并根据URL中提供的请求,web服务器完全成功地检索了相关的网页!以下是处理 URL 请求的代码部分!

if ( strncmp(reqline[1], "/\0", 2)==0 ) 
reqline[1] = "/index.html";
//If no file is specified, index.html will be opened by default

strcpy(path, ROOT);
strcpy(&path[strlen(ROOT)], reqline[1]);
printf("file: %s\n", path);

if ( (fd=open(path, O_RDONLY))!=-1 ) //If a html file is found
{
send(clients[n], "HTTP/1.0 200 OK\n\n", 17, 0);
while ( (bytes_read=read(fd, data_to_send, BYTES))>0 )
write (clients[n], data_to_send, bytes_read);
}
else { //If html file not found
write (clients[n], "File not found", 15);
}

我想在用户提供一个不存在的 html 文件的 URL 时显示我的 404error.html 网页(位于包含 index.html 和其他 html 网页的文件夹中)网页而不是当前显示的文本“找不到文件”!

最佳答案

我无法编译或运行不完整的代码,但如果未找到请求的文件,“猜测”将发送错误通知文件。 “404error.html”文件必须存在于可用路径上。

if ( (fd=open(path, O_RDONLY))!=-1 ) {                  // If the file is found
send(clients[n], "HTTP/1.0 200 OK\n\n", 17, 0);
while ( (bytes_read=read(fd, data_to_send, BYTES))>0 )
write (clients[n], data_to_send, bytes_read);
close(fd); // add this
}
else if ( (fd=open("404error.html", O_RDONLY))!=-1 ) { // Send the error file
send(clients[n], "HTTP/1.0 200 OK\n\n", 17, 0);
while ( (bytes_read=read(fd, data_to_send, BYTES))>0 )
write (clients[n], data_to_send, bytes_read);
close(fd); // add this
}
else {
write (clients[n], "File not found", 15); // tough luck, back to to you
}

我不知道 clients[n] 是什么,但我相信你知道。

源代码可以通过不重复传输代码来提高效率,但我把它留给你了。这个答案是一个想法。

关于c - 在 C 网络服务器中返回 404error.html 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50649709/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com