Главная страница
    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.003 c
15-1298958622
Гость
2011-03-01 08:50
2011.06.19
Как саботировать работы?


15-1298562424
И. Павел
2011-02-24 18:47
2011.06.19
Тяжелый рок!


2-1300115458
Сергей
2011-03-14 18:10
2011.06.19
Как преобразовать данные прочитанные с com порта?


2-1299845657
SIV5000
2011-03-11 15:14
2011.06.19
TObjectList и его размер


15-1299060395
Scott Storch
2011-03-02 13:06
2011.06.19
Цифровая подпись





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