Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2003.01.23;
Скачать: [xml.tar.bz2];

Вниз

Подсчет исходящих байтов   Найти похожие ветки 

 
Beglec   (2002-11-26 14:52) [0]

Есть простой сокет. В программа получает и отправляет сообщения.
Допустим подсчитать входящие байты очень легко.
в событие OnRead
Inc(AllByte,InByte);

То есть в AllByte хранится сумма всего входящих байт.

Внимание вопрос: Как можно посчитать исходящие байты, также в одном месте.
Пытаюсь примерно тоже самое сделать в событии OnWrite чего то не получается.

Спосибо ща ответ


 
F1   (2002-11-26 14:56) [1]

А при отправке(send...) слабо :)))


 
Digitman   (2002-11-26 14:57) [2]


> также в одном месте


ну так и считай "в одном месте" - в этом самом OnWrite() !

есть метод SendStream, у него есть св-во Position - это и есть размер "переданных" данных


 
Digitman   (2002-11-26 15:04) [3]

ставь SendStream() только "в одном месте" - в OnWrite().
до SendStream сохрани Position
сразу же за SendStream снова считывай Position, разницу прибавляй к сч-ку (*)

а для первоначального вызова SendStream зафиксируй где-нить ссылку на Stream и программно вызови процедуру-обработчик OnWrite(). В обработчике же получи сохраненную ссылку на stream и дальше - (*)


 
Beglec   (2002-11-26 15:06) [4]

F1
А теперь представь, что твоя программа отвечат на 250 разных запросов и каждый раз, разный набор данных.
Теперь скажи, в чем рациональность, Делать после каждого send учет байтов?
Ведь это можно сделать всего одной строкой.

Digitman
>>>>>событии OnWrite чего то не получается!!!

Поправка к вопросу
отрявляю при помощи SendBuf.
Желательно немного кода.


 
Digitman   (2002-11-26 15:14) [5]

с SendBuf - еще проще : в случае полного/частичного успеха он возвращает кол-во байт, помещенных в очередь на передачу. Просто если результат SendBuf > 0, прибавляй его к сч-ку.

какой тебе пример ? рядом ветка идет с <Dmitry Polskoy>, там и смотри шаблон


 
F1   (2002-11-26 15:23) [6]

Ну если SendBuf из разных мест, то
function MySendBuf(..)
begin
result:=sendbuf(..)
MyFuckingCountSendByte:=MyFuckingCountSendByte+Result;
end;

:)))


 
Beglec   (2002-11-26 15:31) [7]

F1
Фенкс
Так бы сразу ;)

Это пример более подходящий


 
Digitman   (2002-11-26 15:34) [8]


> Beglec


А если Result = -1 ? Каковы твои действия ?


 
F1   (2002-11-26 15:35) [9]

>Digitman © (26.11.02 15:34)
Согласе, не учел

function MySendBuf(..)
begin
result:=sendbuf(..)
if result>0
MyFuckingCountSendByte:=MyFuckingCountSendByte+Result;
end;



 
Digitman   (2002-11-26 15:38) [10]


> F1


Другое дело)
Только - опять же - если -1, надо ждать OnWrite() и повторять постановку в очередь, иначе данные можно запросто "потерять" при передаче


 
F1   (2002-11-26 15:44) [11]

>Digitman © (26.11.02 15:38)
>Другое дело)

Ну дык твоя школа, ты меня с сокетами и просвятил! ;)


 
Digitman   (2002-11-26 15:46) [12]

да хреново ,видать , "просвятил" ... если сразу же не ставишь во главу угла OnWrite(). Это - самое важное здесь.


 
F1   (2002-11-26 17:24) [13]

Ну, ведь такой вопрос был...


 
Digitman   (2002-11-26 17:47) [14]

Правильно, вопрос был насчет "одного места") .. ладно хоть - не ж.))

Этим "местом" и будет в дан.случае процедура-обработчик OnWrite()


 
F1   (2002-11-26 17:48) [15]

Ok



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

Форум: "Сети";
Текущий архив: 2003.01.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.01 c
4-72608
Dimitry
2002-12-10 06:11
2003.01.23
Как удалить файл с помощью WinAPI?


3-72114
Elshad
2002-12-25 14:53
2003.01.23
Версия Microsoft Jet OLE DB


3-72056
relaxer
2003-01-04 17:06
2003.01.23
Хелп! Unsupported feature в IBX ...


14-72473
ihtiandr
2003-01-05 15:02
2003.01.23
QReport


14-72496
sancho
2003-01-05 19:23
2003.01.23
RTL порт





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский