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

Вниз

Проблема с Socket.ReceiveBuf   Найти похожие ветки 

 
Gektor   (2005-09-01 11:31) [0]

В событии OnRead пишу:

var i : Integer;
   Len : Integer;
   pbuf : PMyArray;

begin
{Принимаем данные и ложим сразу в конец IncomingBuff}
while (Socket.ReceiveLength > 0) do
begin
Len := Socket.ReceiveLength;
i := 0;
try
pbuf := Pointer(fIncomingBuf^[fIncomingBufLen]);
i := Socket.ReceiveBuf(pbuf,Len);
except
AddToDebugLog("Error with receiving Some Data");
end;

и тд...

в Отладчике в первый же раз, при выполнении строки i := Socket.ReceiveBuf(pbuf,Len); выдает окошко CPU и вылетает с ошибками.

Буферы точно созданны.
fIncomingBufLen = 0.
В Len не нулевое значение.
PMyArray Указатель на array[0 .. 7999]

В чем можеть быть проблема?


 
Digitman ©   (2005-09-01 11:53) [1]

Паскаль нужно знать как "Отче наш" !

i := Socket.ReceiveBuf(pbuf^,Len);

к тому же еще и логика неверна ..
зачем тут цикл понадобился, спрашивается ?


 
Gektor   (2005-09-01 12:13) [2]


> Digitman ©

i := Socket.ReceiveBuf(pbuf^,Len); и сразу отрабатывает OnError


 
ALI_YES   (2005-09-01 12:23) [3]

Действительно Паскаль надо знать.
Но если тебе надо передавать большие объемы данных, то тебе лучше испльзовать класс TWinSocketStream.


 
Digitman ©   (2005-09-01 12:44) [4]


> сразу отрабатывает OnError


это уже из другой оперы.

к тому же никаких "сразу" быть не может.

ReceiveBuf  - синхронный блокирующий метод, он либо отрабатывает успешно (т.е. после выполнения возвращает управление на следующий за вызовом ReceiveBuf оператор ) либо возбуждает исключение.

Учимся пользоваться встроенным в Делфи-среду отладчиком !


 
Digitman ©   (2005-09-01 12:47) [5]


> ALI_YES   (01.09.05 12:23) [3]
> если .. надо передавать большие объемы данных, то ..
> лучше испльзовать класс TWinSocketStream.


глупости.

возможность и/или необходимость использования класса TWinSocketStream никак не зависит от объемов транспортируемых данных

возможность зависит от Client/ServerType

необходимость зависит от реально имеющейся возможности + фантазии


 
ALI_YES   (2005-09-01 12:52) [6]


> Digitman ©   (01.09.05 12:47) [5]

Я знаю, просто кому-нибудь это показалось бы удобней


 
Digitman ©   (2005-09-01 13:25) [7]


> ALI_YES   (01.09.05 12:52) [6]


судя по OnRead ни о каких TWinSocketStream не может идти и речи.
автор выбрал асинхронный неблокирующий режим.


 
ALI_YES   (2005-09-01 14:30) [8]


> Digitman ©   (01.09.05 13:25) [7]

Хорошо, пусть он выбрал.
Но, ты считаешь, что

> асинхронный неблокирующий режим.
более удобен?


 
Digitman ©   (2005-09-01 14:37) [9]


> ALI_YES   (01.09.05 14:30) [8]


я считаю, что прежде чем давать советы в [3] нужно внимательно изучить сабж.

сабж же говорит об выборе (осознанном или неосознанном - неважно) автором режима ctNonBlocking, для которого TWinSocketStream неприменим в принципе.


> более удобен?


причем здесь "удобство" ?



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

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

Наверх





Память: 0.46 MB
Время: 0.039 c
2-1132587016
aglar
2005-11-21 18:30
2005.12.11
Как разрешить общий доступ к диску?


5-1116060349
Нулевой
2005-05-14 12:45
2005.12.11
Как из ComboBox сделать DBLookUpComboBox?


14-1132011027
ronyn
2005-11-15 02:30
2005.12.11
Как установить драйвер?...


14-1132125094
Mike Kouzmine
2005-11-16 10:11
2005.12.11
Арестована коллекция Пушкинского музея.


2-1132664750
JTAG
2005-11-22 16:05
2005.12.11
Народ еще вопрос по командной строке





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