![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Что за ошибка, в чем причина? [D5, D6, D7, NT4, Win2k, WinXP]
neodiX © (2003-01-13 01:25:00)Когда с clientsocket"oм в цикле посылаю много (когда мало все ок)данных (> 10000 байт )выкидывает еррор "An established connection was aborted by the software in your host machine (10053), on API send". Как понять?
Посылаю так:
for i:=1 to 100 do begin
client.socket.SendText("haja haja haja haja haja haja haja haja ")haja "+#10);
sleep(100);
end;
P.S. firewall выключен.
Digitman (2003-01-15 09:12:00) [1]Для начала вчитайся в хэлп к SendText(). Начиная с Д5 это - функция ! И она возвращает результат. Который ты игнорируешь. Считая, очевидно, что SendText() "сама все сделает как надо".
К тому же логика работы любого send-метода (в т.ч. - SendText) сильно зависит от режима гнезда - blocking или non-blocking
Кроме того, ни один из send-методов не занимается непосредственно передачей данных. Все что делают эти методы - помещают (вернее, пытаются поместить) данные в сист.буфер передачи гнезда. Который, кстати, не "резиновый" и имеет некий небольшой (по-умолчанию - 8к) фиксированный размер в каждый момент времени. Переполнение буфера в non-blocking-режиме отслеживается как анализ результата вызова того или иного send-метода, освобождение буфера non-blocking-режиме фиксируется фактом возникновения OnWrite-события
nikus (2003-01-15 08:31:00) [2]Попробуй вставить в цикл Application.ProcessMessagess;
Slym (2003-01-13 06:30:00) [3]sleep(100) - зачем? Ты однако сокет усыпляешь, а система его по таймауту отключает. Хотя некоторые сокеты имеют свой поток...