Форум: "Сети";
Текущий архив: 2011.06.19;
Скачать: [xml.tar.bz2];
ВнизIndi, проблема с чтением из сокета данных Найти похожие ветки
← →
alshtam (2009-03-29 14:34) [0]Здравствуйте! помогите пожалуста разобраться в моем вопросе!
у меня есть сервер сокетное соединение. использую компонент indy. При большом количестве конектов 2000 возникает ошибка "Not Connected",
в команде AThread.Connection.ReadBuffer(buf,sizeof(buf));
где AThread объект класса TIdPeerThread. объект AThread передается в событие onExecute(AThread: TIdPeerThread).
Прежде чем данные читать делаю проверку
var
buf:byte;
...
if Assigned(AThread) and AThread.Connection.Connected then
begin
...
ReadBuffer(buf,sizeof(buf));
...
end
Что я сделал не так???
← →
Хибл Герзмаев (2009-03-29 17:31) [1]инди гуаано! пиши на чистых сокетах
← →
CrytoGen (2009-03-29 17:49) [2]версия инди какая? MaxConnections установлен?
← →
Сергей М. © (2009-03-29 19:46) [3]
> При большом количестве конектов 2000
2000 * 1Mб (дифолтный размер стека) = уже равно 2 Гб
Ни о чем не говорит эта цифирь ?
← →
CrytoGen (2009-03-29 22:54) [4]а мне казалось что там стек общий.
← →
alshtam (2009-03-30 04:54) [5]на 1000 соединений тоже иногда такая ошибка проскакивает, хотя есть другой, давно написаный сервер так от 1000 держит те вылетает
← →
alshtam (2009-03-30 05:30) [6]
> 2000 * 1Mб (дифолтный размер стека) = уже равно 2 Гб
А почему 1 Мб?
← →
alshtam (2009-03-30 05:33) [7]
> версия инди какая? MaxConnections установлен?
MaxConnections ставил 2000 чтоб быстрее отловить ошибку котороая возникает гораздо реже при чем при MaxConnections=1000.
Indy 9 стоит
← →
Сергей М. © (2009-03-30 08:36) [8]
> мне казалось что там стек общий
С какого перепугу общий-то ?
У каждого потока свой стек.
> почему 1 Мб?
Свойства проекта -> Linker -> Max stack size : $100000 (ты же не менял это значение ? Наверняка нет)
TThread вызывает BeginThread со вторым параметром StackSize=0, что соответствует второму параметру dwStackSize неявного вызова CreateThread, про который в справке сказано:
Specifies the size, in bytes, of the stack for the new thread. If 0 is specified, the stack size defaults to the same size as that of the primary thread of the process. The stack is allocated automatically in the memory space of the process and it is freed when the thread terminates. Note that the stack size grows, if necessary.
CreateThread tries to commit the number of bytes specified by dwStackSize, and fails if the size exceeds available memory.
← →
alshtam (2009-03-30 11:38) [9]мне думаю стока не надо можно видимо меньше задать?
← →
Сергей М. © (2009-03-30 12:12) [10]Это уж тебе решать
← →
alshtam (2009-03-30 12:28) [11]спасибо
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2011.06.19;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.004 c