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

Вниз

О Socket.ReceiveLength   Найти похожие ветки 

 
Alek_1   (2004-11-10 21:17) [0]

Вот тут у меня возник вопрос, можно ли както узнать сколько байт выслал мне клиент?
Вот например делаю так
Socket.SendText("какаято пурга в 300 килобайт");

Естественно что сервер получать их будет постепенно, так вот можно ли в таком случае узнать серверу сколько байт отправил клиент если клиент перед отправкой сам несказал размер?

И что показывает Socket.ReceiveLength? то что в данный момент ко мне пришло или то размер отосланого клиентом пакета?

Я хочу неполные пакеты сбрасывать в буфер, до полного их прихода.

Что можете посоветовать?


 
Verg ©   (2004-11-10 23:25) [1]


> так вот можно ли в таком случае узнать серверу сколько байт
> отправил клиент если клиент перед отправкой сам несказал
> размер?


Тогда он должен обозначить конец передаваемых данных некоторой, комбинацией, которой не может встретиться в самих данных.


> И что показывает Socket.ReceiveLength?


Это некоторое число, пропорциональное кол-ву принятых сокетом данных из потока на данный момент времени.  Принятых, а не переданных "собеседником".
Коэффициент же этой пропорциональности больше единицы.
ReceiveLength для TCP сокетов используется лишь для оценки объема принятых данных.


 
Alek ©   (2004-11-11 12:14) [2]

Я делаю небольшой веб сервер  и мне нужно знать пришел весь пакет или нет!

Вот например при обычных запросах все нормально они приходят сразу, а вот если например идет закачка какогото файла, то естественно посылка разбивается на несколько пакетов).

Вот если кто работал с заголовками ХТТП подскажите как узнать пришел весь пакет или нет, я конечно считаю Контент-Ленгт и все работало, пока не начал заходить на сайт через прокси сервер.

Может у кого уже есть готовый обработчик ХТТП запросов?


 
Alek ©   (2004-11-11 12:28) [3]

Конечно я читал РФК и знаю что загловок от даннх отделяет пустая строка и потом можно вычислить ее контент-легт, но например Прокси через который зашел я WinRoute после первой строки в методе ПОСТ вставляет пустую строку, да и в методе ГЕТ тоже.

Вот как бороться с разными проксями?


 
Digitman ©   (2004-11-11 12:39) [4]


> Вот например при обычных запросах все нормально они приходят
> сразу


не факт.
и что, кстати, есть "обычный запрос" ? надо понимать, есть "необычные" ? "чудесно-волшебные" ?

что есть "сразу" ? в случае с поточными протоколами нет и не может быть повода утверждать, что "нечто" происходит "сразу".


> если например идет закачка какогото файла, то естественно
> посылка разбивается на несколько пакетов


еще раз : касаемо поточного протокола нет никакой разницы, "закачка" там творится или "откачка", "обычный запрос" или "волшебный запрос".


> пришел весь пакет или нет


и еще раз : НЕТ понятия "пакет" на уровне поточно-ориентированного прикладного протокола.

это означает, что "какаято пурга в 300 килобайт" НЕ является целостным пакетом с т.з. принимающей "пургу" стороны

когда речь идет о потоке, АБСОЛЮТНО неважно, что из себя представляет изнутри эта "пурга", принимающей стороне гораздо важней собрать воедино все ожидаемые 300 кб "пурги", принятой, может, и за один прием, а , может, и за триста приемов, прежде чем принимать дальнейшие решения по обработке этой "пурги"


 
Alek ©   (2004-11-11 12:52) [5]


> гораздо важней собрать воедино все ожидаемые 300 кб "пурги",
> принятой, может, и за один прием, а , может, и за триста
> приемов, прежде чем принимать дальнейшие решения по обработке
> этой "пурги"


так вот как собрать все (ХТТП заголовок и эти 300 кб пурги или сколько тама придет) воедино для того чтобы потом обработать?

Для особо придирчивых к словам объясню.
"обычный запрос" - ГЕТ или ПОСТ запрос без параметров или такой запрос который приходит за один раз.

"сразу" - я не утверждаю что это произошло сразу, может была задержка мне не известно, я имею ввиду получил то что мне отсылают за один раз.

"пакет" - то что поступило ко мне в сокет в даннй момент

Это были небольшие пояснения к выше написаному мной тексту.
Еще что пояснить? ))


 
Digitman ©   (2004-11-11 13:07) [6]


> Alek ©   (11.11.04 12:52) [5]


про 7-уровневую модель OSI xnj-yb,elm cksifk &
разницу между прикладным и транспортным протоколами инф.обмена понимаешь ?


 
Alek ©   (2004-11-11 13:18) [7]

нет, но если даш линк почитаю


 
Digitman ©   (2004-11-11 13:30) [8]

что, так трудно набрать "OSI" в любой поиск.системе ?


 
Verg ©   (2004-11-11 13:46) [9]


> так вот как собрать все (ХТТП заголовок и эти 300 кб пурги
> или сколько тама придет)


Либо в заголовке, в Content-Length размер, либо все, что до разрыва соединения.



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

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

Наверх




Память: 0.49 MB
Время: 0.075 c
1-1106035263
Алексей34
2005-01-18 11:01
2005.01.30
TDBGrid и индекс выбранное строки


3-1103871030
Kabaev Sergey
2004-12-24 09:50
2005.01.30
PrintDBGridEh - проблемы с масштабом изображения


4-1102475495
Slym
2004-12-08 06:11
2005.01.30
Каким образом можно подменить System.pas


4-1102961158
Bes
2004-12-13 21:05
2005.01.30
Оповещение основной программы о выгрузке DLL...


4-1102597995
Timer
2004-12-09 16:13
2005.01.30
SystemTimer