![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подскажите по сокетам... [D6, WinXP]
Anton. © (2005-05-14 12:15:00)Сделал такой текстовый файл:
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
.........................................
64991 64992 64993 64994 64995 64996 64997 64998 64999 65000
Теперь серверсокетом в событии OnClientRead делаю следующее:
Socket.SendText('HTTP/1.0 200 OK'+#$0D+#$0A);
Socket.SendText('Server: My Srv'+#$0A);
Socket.SendText(#$0D+#$0A);
mstrm := TMemoryStream.Create;
mstrm.LoadFromFile('d:\1.txt');
Socket.SendStream(mstrm);
Socket.Close;
Принимаю это интернет эксплорером. И там отображается только до сюда:
<CODE
......
5711 5712 5713 5714 5715 5716 5717 5718 5719 5720
5721 5722 5723 5724 5725 5726 5727
и все. Почему???
Anton. (2005-05-14 14:32:00) [1]SendText()возвращает кол-во отосланных байт для не блокирующего сокета. Можно по подробнее - как это использовать?
Да и исп-ся он только для отсылки заголовка, а файл шлется при помощи SendStream. Он тоже функциональный и возвращает булевское значение, сигнализирующее о том что весь поток был успешно отправлен.
Возвращает SendStream, как ни странно, True...
Digitman (2005-05-14 13:22:00) [2]
> Anton. © (14.05.05 12:58) [2]
для начала ответь самому себе на вопрос, почему в то время как SendText() есть функциональныйметод, ты используешь его как процедурный, игнорируя результат
Anton. (2005-05-14 12:58:00) [3]Хорошо. вставляю после Socket.SendText('Server: My Srv'+#$0A);
Socket.SendText('Content-length: 280915'+#$0A);
и ничего не меняется (280915 это как раз р-р потока).
Насколько я понимаю, эксплорер будет принимать пока сервер сокет не закроет.
Digitman (2005-05-14 12:50:00) [4]а откуда IE знает размер посылаемого тобой потока ?