Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

асинхронная работа с сетью

3.2K
23 апреля 2008 года
Sania
186 / / 28.10.2006
Собственно прошу привести пример асинхронной работы с сетью.
Извиняюсь, если он уже есть - не нашел.

Есть 1 сервер и N клиентов в сети. Задача: быстро опросить клиенты.
Опрос ведется через TIdTCPClient. При доступности всех клиентов опрос происходит быстро, но если клиент недоступен, то прога ждет и резко теряет в скорости.
Хочется реализовать следующее: в асинхронном режиме проверить все клиенты на наличие открытого порта и проверять коннектом только открытые.

Спасибо.
303
24 апреля 2008 года
makbeth
1.0K / / 25.11.2004
Цитата: Sania
Собственно прошу привести пример асинхронной работы с сетью.
Извиняюсь, если он уже есть - не нашел.

Есть 1 сервер и N клиентов в сети. Задача: быстро опросить клиенты.
Опрос ведется через TIdTCPClient. При доступности всех клиентов опрос происходит быстро, но если клиент недоступен, то прога ждет и резко теряет в скорости.


Видишь ли в чем загвоздка - Indy не поддерживает асинхронную работу с сокетами изначально (ну не задумана она так работать). Поэтому используй для асинхронной работы с сокетами какую нибудь другую библиотеку. [COLOR=Gray](Хотя нет, вру... :) Приделали таки туда костыль по имени IdAntifreeze - но от него толку :()[/COLOR]

Цитата:

Хочется реализовать следующее: в асинхронном режиме проверить все клиенты на наличие открытого порта и проверять коннектом только открытые.


Что-то не совсем понял :confused: Если есть коннект с клиентом - клиентский сокет открыт (читай - существует). Если нет...

37K
26 апреля 2008 года
Ghost Rider
7 / / 26.04.2008
Для асинхронной работы с сетью компоненты Indy не очень то подходят.
Лучше всего использовать Socket'ы. Их программирования конечно посложней Indy, но это того стоит.
Для программирования сокетов тебе потребуется заголовочный файл WinSock2.pas (можно просто WinSock.pas, но это уже старая версия).
Возможно потребуются другие файлики (ws2tcpip.inc, wsipx.inc, wlink.inc и
wsnetbs.inc), но обычно одного этого хватает.
Для начала работы с сокетами их нужно инициализировать
WSAStartup-иниц. сокета.
Затем подготовить разъемы и можно работать. (правильная реализация всего этого в совокупности дает офигительную скорость)
Да насчет функций из WinSock и как вообще с ним работать. Доков на эту тему предостаточно и думаю тебе не составит труда достать нужную инфу. Я конечно мог бы привести все необходимые шаги для твоей проги с клиентами, но это займет много места (с комментами).
Удачи тебе.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог