Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Либа, позволяющая создавать TCP Server (TIOCP), которая исп-ет CreateIoCompletionPort 
:(
    Опции темы
T800
  Дата 24.9.2010, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 8.6.2007

Репутация: нет
Всего: 1



Сейчаз на серверной стороне использую Indy9. В реализации для каждого нового коннекта создаётся свой поток.
Хочется избавиться от кучи потоков, которые в основном простаивают, т.е. хочется заюзать все преимущества порта завершения.
Облазил весь инет, но так и не нашёл применение порта завершения в Delphi проектах.
Хотя есть реализации в либе CnPack (NetComm) и Code-CZQ (http://code-czq.googlecode.com/svn/trunk/IUP/ ).
В обоих коменты написаны в UTF8 (азия).

Вот хочу спросить у здешних постояльцев о существующей полноценной реализации TCP сервера с использованием CreateIoCompletionPort .
PM   Вверх
Xenag
Дата 25.9.2010, 01:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 51
Регистрация: 6.3.2010

Репутация: нет
Всего: нет



Ну так потоки для того и простаивают, чтобы не создавать постоянно новые, а использовать одни и те же.
Прибивать потоки имеет смысл только при редких подключениях.
Ну а в принципе за поведение отвечает менеджер тредов. 
PM   Вверх
T800
Дата 25.9.2010, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 8.6.2007

Репутация: нет
Всего: 1



Xenag
Сама концепция Indy9 подразумевает синхронную работу (блокирующая система).
А концепция пула потока продразумевает асинхронную работу (что мне и нужно).
PM   Вверх
T800
  Дата 17.1.2011, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 8.6.2007

Репутация: нет
Всего: 1



Оказывается то что искал есть на torry.net 
Вот ссыль: http://www.torry.net/quicksearchd.php?Stri...r&Title=Yes (Freeware)
Это HTTP(S) сервер, который использует CreateIoCompletionPort для асинхронной обработки запросов от клиента. Написан сервак очень качественно (вроде бы все нюансы в нём отображены, даже есть поток для ожидания дисконнекта клиентов при завершении работы сервера). Написан сервер русским преверженцем Delphi. 

Т.е. это полноценная замена Indy (при написании многопоточного сервера).
Кстати, поддержка SSL(TLS) в этом сервере реализованы не через либы OpenSSL, а через MSCrypto.

Я немного доработал этот сервак:
1) сделал консольную версию из примера автора (правда всё что касается SSL удалил/закоментил, т.к. планирую использовать свой механизм шифрования траффика);
2) сделал полноценный механизм логирования, который не использует виндовых объектов синхронизации (модуль uTempLog.pas).

Сам процесс сброса логов в файл и в консоль осуществляется в отдельном потоке.
При использовании опции FDebugLog=True возможна такая ситуация при отображении логов:
Код

00000007 <2011-01-17 11:04:10>  01 [0000001E] ProcessRequest - Complete
00000008 <2011-01-17 11:04:40>  01 [0000001E] ReadComplete Size=0
00000009 <2011-01-17 11:04:40>  02 [0000001E] Disconnect  IP=127.0.0.1
0000000A <2011-01-17 11:04:40>  01 [0000001E] ProcessBuffer - IN

Т.е. Disconnect отлогировался быстрее чем ProcessBuffer. Это из-за того, что при FDebugLog=True первым делом вызывается Windows.OutputDebugString, которая "тормозит" текущий поток, при этом другие потоки продолжаю работать.
В принципе, эта ситуация возможна и при FDebugLog=False , но думаю это не столь критично, т.к. сервак то асинхронный. 

Вот ссыль на мою версию: http://www.acdev.narod.ru/hpservcon.zip

Это сообщение отредактировал(а) T800 - 17.1.2011, 12:15
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0612 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.