Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема с использованием TServerSocket в ServiceApplication !!! [NT4, Win2k, WinXP]


Страницы:   1 2

AlexAn ©   (2002-08-19 09:42:00) 

Может кто-нибудь сталкивался с проблемой:
Серверный неблокирующий сокет работает в сервисе, при попытке клиента подключиться, соединение устанавливается от 10 до 20 сек., т.е. Accept срабатывет примерно после 15 сек. с момента вызова Connect у клиента. ?
Причем если весь этот алгоритм запихнуть не в TServiceApplication а в обычный TApplication, то проблем нет.
Еще есть один нюанс - с той же машины на которой стои сервис клиент соединяется моментально.
Если у кого есть какие-либо соображения по поводу, как решить эту проблему - мыльте плз.


Digitman   (2002-08-26 13:44:00) [21]


> думаю попробовать через SockEvent


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


AlexAn   (2002-08-26 13:03:00) [22]

По поводу первого пункта у меня и есть несколько вопросов:
- во-первых, почему такая проблема возникает только в сервисе, обычное приложение работает нормально?
- почему все остальные Message-и проходят нормально, кроме FD_ACCEPT?
- TIdSever - блокирующий, а мне нужно именно без блокировки
я сейчас переаисываю все это на API, причем к каждому SOCKET вешаю свое окно со своим потоком, так чтобы они не пересекались. Посмотрим, что из этого получиться. Если не пойдет через оконную процедуру, думаю попробовать через SockEvent - тоже наверное вариант ;-)

!!! Но вообще-то обидно, потому-как в хелпе по дефам приведен пример для неблокирующего сока под сервис и есл его передрать один к одному, то такая ф-ня получается!!!
приходится тратить время на обдумывание


Digitman   (2002-08-21 18:03:00) [23]


> - почему они не возникают при 1-ом коннекте


Если TServerSocket работает в режиме stNonBlocking, это может быть вполне объяснимо тем, что при поступлении запроса на очередной коннект сервер занят обработкой прочих сообщений, и Accept() стоит в очереди.


> - почему TIdServer нормально работает

Не берусь утверждать (не рассматривал попросту TIdServer детально), но не исключено, что именно по вышеуказанной же причине : режим TIdServer по-умолчанию может быть и ThreadBlocking.


> я не использую имя, а адресс !!!


Тогда DNS вроде бы отпадает. Тем более - обрати серьезное внимание на режим работы серверного компонента


AlexAn   (2002-08-21 17:55:00) [24]

это конечно могло бы быть похоже на DNS проблемы, только:
- почему они не возникают при 1-ом коннекте
- почему TIdServer нормально работает
- я не использую имя, а адресс !!!
проблема не в этом


Digitman   (2002-08-19 11:54:00) [25]

Что-то похожее на проблемы с DNS.

При работе TServerSocket в составе service application на другой машине ping по имени целевого хоста с клиентской машине какие временные результаты дает ?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо