Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.012 c
1-61526
Бук
2002-12-09 13:05
2002.12.19
BackSpace и Del


14-61835
QUE
2002-11-26 10:22
2002.12.19
Задача монетами


14-61827
al_
2002-11-27 23:42
2002.12.19
Мастера!!! Помогите с задачкой!!!


3-61400
BorisUK
2002-12-02 16:49
2002.12.19
Oracle трехзвенка, передача на клиента только части запроса


14-61818
ALX
2002-11-27 19:49
2002.12.19
Flash and EXE




   Наверх