Я создаю сервер сокетов, который, например, будет использоваться с использованием ввода типа «localhost: 8080/WWW/index.html», и он вернет файл index.html. Я могу разобрать запрос, чтобы, когда кто-то вводит, что у меня будет буфер «/WWW/index.html» и из местоположения моей программы, если я сделал vim /WWW/index.html, я бы открыл, если по какой-то причине мой код всегда говорит, что файл не найден. Вот следующий код ...Файл C никогда не был найден
char* parseRequest(char* request) {
//assume file paths are no more than 256 bytes + 1 for null.
char *buffer = malloc(sizeof(char)*257);
memset(buffer, 0, 257);
if(fnmatch("GET * HTTP/1.*", request, 0)) return 0;
sscanf(request, "GET %s HTTP/1.", buffer);
return buffer;
}
int fileExists(const char *fname){
FILE *file;
if(file = fopen(fname, "r"))
{
fclose(file);
return 1;
}
return 0;
}
recv(sock,buffer,255,0);
//reading inputted directory
char *dir = parseRequest(buffer);
if(fileExists(dir) == 1){
send(sock, "File found", 200, 0);
}else{
send(sock, "404: File not found", 200, 0);
}
опубликованный код пытается получить доступ к, для чтения, веб-странице: index.html. Если сервер не работает очень плохо, сервер должен лишить клиента доступа к чтению файла index.html. Существует определенная область, обычно/должна быть настроена на сервере, где клиенту разрешен доступ к файлам. Все остальные каталоги/файлы должны быть настроены с привилегиями «deny». – user3629249