Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 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
2-1299788475
rodionov_uv
2011-03-10 23:21
2011.06.19
помогите организовать проверку


8-1212599857
DevilDevil
2008-06-04 21:17
2011.06.19
плагин для фотошопа ?


6-1237876800
Vudu
2009-03-24 09:40
2011.06.19
Отключить/подключить интернет


2-1299971156
Сергей К.
2011-03-13 02:05
2011.06.19
Нажатие клавиши


15-1299145221
Неважно
2011-03-03 12:40
2011.06.19
Версия Builder a





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