Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.19;
Скачать: CL | DM;

Вниз

Проблемы с написанием Web сервера...   Найти похожие ветки 

 
pavor   (2002-10-21 07:39) [0]

Приветствую вас, уважаемые профессионалы!

При написании указанного сервера возникла проблема: из любого файла отсылается только первые 8 килобайт (примерно). Т.е. с файлами меньше 8Кб все ОК, а больше этого размера передать не удается передать не удается.
Для передачи используется Socket.SendStream.

Это обработчик события OnClienRead:

var Stream:TFileStream;
...

Stream:=TFileStream.Create("FILE.EXT", fmOpenRead);

Response:=Response+IntToStr(Stream.Size);//Добавляем длину файла
// к ответу на запрос браузера.

Socket.SendText(Response);// Отправили ответ на запрос.

Socket.SendStream(Stream);

//Stream.Free; Нужно это проделать, но здесь вылетает с //сообщением об ошибке. Пока игнорируем.

Socket.Close; //Закрываем соединение (протокол HTTP/1.0)


Может уже кто сталкивался?


 
Reindeer Moss Eater   (2002-10-21 08:59) [1]

Поток самому убивать не надо.


 
Pavor   (2002-10-21 12:29) [2]

В смысле - Stream.Free не делать? Почему?

И непонятно все же, почему только 8кб пересылается...


 
Reindeer Moss Eater   (2002-10-21 13:14) [3]

Патаму
Note: The Stream passed as a parameter to SendStream becomes “owned” by the windows socket object. The Windows socket object frees the stream when it is finished with it. Do not attempt to free the stream after it has been passed as a parameter.


 
Pavor   (2002-10-21 14:30) [4]

Я вроде видел это в примечании к ф-ции SendStreamThenDrop...
Но - ОК, я сейчас проверить не могу. :)
А насчет 8Кб есть соображения? Это, в общем-то главный вопрос...


 
Reindeer Moss Eater   (2002-10-21 15:14) [5]

Reindeer Moss Eater (21.10.02 08:59)


 
Pavor   (2002-10-23 14:46) [6]

Последней фразы я как-то не уловил.. :)))


 
Reindeer Moss Eater   (2002-10-23 16:45) [7]

Reindeer Moss Eater (21.10.02 08:59)
Поток самому убивать не надо.



 
Pavor   (2002-10-25 08:45) [8]

А-А-А!!!!
Ну как я раньше не допер??!!! Все, понял. Уже заработало.
Огромное спасибо!


//На всякий случай, если кто еще не понял :)
Socket.Close; //не делайте, он соединение обрывает
// и успевает отослаться только содержимое буфера - около 8Кб!



Страницы: 1 вся ветка

Текущий архив: 2002.12.19;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.019 c
3-61500
oss
2002-11-29 13:12
2002.12.19
длина названия поля таблицы


7-61849
ZMaxim
2002-09-14 17:09
2002.12.19
Алгоритм случайных чисел


1-61585
Essense
2002-12-10 10:50
2002.12.19
окно консольного приложения


6-61720
DED LOGOPED
2002-10-23 21:12
2002.12.19
Помогите с сокетами, почему при частом обращении отрубает?


3-61433
Fishka
2002-11-26 14:03
2002.12.19
Foxpro-шные базы с CDX-индексами и memo-полями (fpt)