Итак, я работаю над написанием простого веб-сервера на C, и теперь я пытаюсь понять, как передавать файлы большего размера. Я пытаюсь сделать это с файлом ~ 40 МБ прямо сейчас, и я получаю ошибку сегментации (по крайней мере, это то, что говорит мне wget!)
Дело в том, что сама программа никогда не выдаёт мне ошибку, она просто завершает работу, только когда я пытаюсь получить файл с помощью wget, wget сообщает, что она выдает ошибку в ошибке сегмента. Вот код, который отправляет файл:
while( 1 ) {
int bytes_read = fread( file_buffer, 1, BUFFER_SIZE, f );
printf( "Bytes read: %d\n", i * 1024 );
if ( bytes_read == 0 ) {
if ( logging > 0 ) {
printf( "End of file reached...\n" );
}
break;
} else {
send( client, file_buffer, strlen( file_buffer ), 0 );
if ( logging > 1 ) {
printf( "Buffer (%d): %s\n\n", bytes_read, file_buffer );
}
}
i++;
}
Есть идеи, что не так? Он отлично работает с небольшими файлами, но только не с этим. О, и число прочитанных байтов меняется каждый раз, когда я пытаюсь, оно колеблется от 240000 до 770000. Мысли? Спасибо!