Доброе утро!
У меня возник вопрос. Пару месяцев назад начал работать с делфи.
Подскажите как реализовать следующую задачу.
Вот как сейчас работает моя программа:
- слушает определенный порт
- если на этот порт приходит запрос от клиента, то обрабатывает этот запрос
- если в момент обработки запроса от клиента приходит еще один запрос, то его необходимо отклонить
Запрос представляет из себя строку с параметрами. Получив эти параметры программа вызывает функцию из Dll,
которая отправляет эти параметры на устройство через COM- порт. Устройство обрабатывает данные и возвращает ответ.
Суть проблемы. Обработка данных устройством занимает 15-20 секунд, и в это время все запросы приходящие на порт, который слушается -- становятся в очередь и не обрабатываются пока не отработает функция. Это не допустимо. Необходимо, чтобы в случае занятости -- клиент сразу получал ответ. Как наладить параллельную работу
прослушки порта и остальной работы программы?
Вот участок кода, который обрабатывает запросы:
Код:
if ServerSocket.Socket.ActiveConnections = 1 then
begin
//тут читаем параметры запроса
CheckRequest; // обрабатывает запрос (15-20 секунд);
GetParam:='';
exit;
end
else
begin
ServerSocket.Socket.Connections[ServerSocket.Socket.ActiveConnections-1].SendText('Сервер не доступен');
Application.ProcessMessages;
Buffer.Lines.Insert(0,'Отключаем лишний коннект');
Application.ProcessMessages;
ServerSocket.Socket.Connections[ServerSocket.Socket.ActiveConnections-1].Close;
Application.ProcessMessages;
ConNum;
end;