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

Вниз

Прием буфера из сокета   Найти похожие ветки 

 
TWINc_   (2007-01-16 16:42) [0]

прикрутил функцию... с маленькими пакетами вроде все работает хорошо, а когда посылаю пакет размером кб в 500, то все завершается крахом или просто забито нулями после первой принятой поции...


const
BUFS = 1024;

procedure TSock.ReceiveBuffer(aBuffer : pointer; const aSize : int);
var
 Buf : PByteArray;
 Len, ReadTotal, ReadLen,i : int;
 Tick : DWORD;
begin
 GetMem(buf,aSize);
 ReadTotal := 0;

 if aSize < BUFS then
   ReadLen := aSize
 else
   ReadLen := BUFS;

 while ReadTotal < aSize do
 begin
   tick := GetTickCount;
   if ReadTotal + ReadLen > aSize then
     ReadLen := aSize - ReadTotal;
   len := recv(Sock,buf[ReadTotal],ReadLen,0);
   if len <= 0 then
   begin
     FIsConnected := false;
     break;
   end; // if
   Inc(ReadTotal,len);
   if ReadTotal >= aSize then
     break;
   if GetTickCount - tick < 1 then
     ReadLen := ReadLen * 2;
 end; // while

 Move(buf[0],Pbytearray(aBuffer)[0],aSize);
 FreeMem(buf,aSize);
end;


 
Сергей М. ©   (2007-01-17 08:20) [1]


> прикрутил


Откручивай.
Не то прикрутил.
Или не так.

Для "прикручивания" существует "отвертка" типа отладчик.


 
TWINc_   (2007-01-18 01:59) [2]


> Сергей М. ©   (17.01.07 08:20) [1]

не знаем чего ответить - молчим...

p.s. проблема решена


 
Сергей М. ©   (2007-01-18 08:55) [3]

function TSock.ReceiveBuffer(aBuffer: Pointer; aSize: Integer): Integer;
var
BytesRead: Integer;
begin
 Result := 0;
 while aSize > 0 do begin
   BytesRead := recv(Sock, PByteArray(aBuffer)[Result], aSize,0);
   if BytesRead <= 0 then Exit;
   Inc(Result, BytesRead);
   Dec(aSize, BytesRead);
 end;
end;


Вот и все премудрости для блок.режима)



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

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

Наверх




Память: 0.44 MB
Время: 0.043 c
2-1187263881
gentos
2007-08-16 15:31
2007.09.09
закрытие fsMDIChild формы


2-1187197809
olevacho_
2007-08-15 21:10
2007.09.09
Звонки с мобильника


15-1186466219
gn
2007-08-07 09:56
2007.09.09
Продвижение сайта.


15-1187019740
@!!ex
2007-08-13 19:42
2007.09.09
Плакал...


2-1187235579
Андрей Л.
2007-08-16 07:39
2007.09.09
Эмуляция нажатие кнопки





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский