Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2010, 19:28   #1
Vohakisa
Пользователь
 
Регистрация: 11.05.2009
Сообщений: 47
По умолчанию Клиент-сервер+MySQL InterBase проблемы в подключением 2 клиентов.

Использую Indy компоненты. Иногда когда клиент подаёт запрос, сервер отвечает какой-то ошибкой (ошибки разные, часто когда два клиента отсылают запрос, и никогда когда 1 клиент).
Отсюда вывод, что где-то так сказать находится "узкое горлышко" и сервер или БД не успевают выполнить запрос. Своим неопытным глазом вижу три претендента на место "узкого горлышка" (ну нравится мне это выражение ):

1. Программа сервер имеет одно подключение к БД в виде TIBDataBase, 1 транзакцию в виде TIBTransaction и 1 TIBQuery.
2. БД зарегестрирована как локальная База Данных и использует клиентскую библиотеку gds32.dll.
3. Есть подозрения, что Сервер работает только с одним клиентом, то есть не используется многопоточность. Ниже приведён код приёма и ответа сервера.
P.S. Использую TIdCommandHandlers.
Код:
procedure TFMain.IdTCPServer1c_loginCommand(ASender: TIdCommand);
var login, pass, s : string;
    j: integer;
begin
//s:=''ж
login:=Asender.Params[0];
pass:=ASender.Params[1];
DM.IBQUsers.Params[0].Value := login;
DM.IBQUsers.Params[1].Value := pass;
DM.IBQUsers.Open;
if DM.IBQUsers.IsEmpty=true then
  ASender.Reply.Text.Text:='Not found1.'
else begin
  while (not DM.IBQUsers.Eof) do
  begin
    for j := 0 to DM.IBQUsers.FieldCount - 1 do begin
     s := s + DM.IBQUsers.Fields[j].AsString;
     s := s + '-';
    end;
    DM.IBQUsers.Next;
    s := s + ';';
  end;
end;
DM.IBQUsers.Close;
if s=''
then
  ASender.Reply.Text.Text:='Not found.'
else
  ASender.Reply.Text.Text:=s;
Смотря на этот код, можете мне сказать, использую ли я многопоточность?

Начал изучать MySQL неделю назад, а инди только второй день знаю.

Укажите мне мои ошибки пожалуйста.
Vohakisa вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сервер с кучка клиентов kvantec Помощь студентам 0 14.04.2010 20:51
Проблемы с бами Interbase, Проблема установки на сервер vw1 БД в Delphi 12 16.07.2009 12:26
Возможно-ли Клиент-серверное приложение типа Клиент(Pascal) а сервер(CGI)? Demol Работа с сетью в Delphi 1 21.04.2009 16:18
клиент-сервер MySQL jziiiiiii БД в Delphi 10 15.02.2008 12:29
Сервер и несколько клиентов Andr Работа с сетью в Delphi 10 17.09.2007 09:24