В настоящее время у меня проблемы с программированием на сокете C. Мне необходимо использовать следующую команду curl в качестве поведения клиента для запроса файла с сервера.
curl -v SERVER_ADDRESS --request-target FILENAME
для отправки с сервера
Пока что я могу создать сервер, разобрать заголовки и обработать запрос PUT. Но у меня проблемы с запросом GET, который отправляет файл с сервера на клиент. Мой код не будет создавать, открывать и писать файл на клиенте. И вот часть, которую я не могу решить.
//cl is value returned by accept()
fd = open(name, O_RDONLY);
if (fd<0){
write(cl, "HTTP/1.1 404 Not Found\r\n", sizeof("HTTP/1.1 404 Not Found\r\n"));
close(cl);
}
else{
contentLength = 0;
temp = read(fd, newbuffer, 32768);
while(temp>0){
write(cl, newbuffer, temp);
contentLength = contentLength+temp;
temp = read(fd, newbuffer, 32768);
}
sprintf(message, "HTTP/1.1 200 OK\r\nContent-Length: %d", contentLength);
strcat(message, "\r\n\r\n");
write(cl, message, sizeof(message));
Помогает заранее.