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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.08.2011, 15:08   #1
Yur@
Пользователь
 
Регистрация: 19.11.2009
Сообщений: 29
По умолчанию Клиент - сервер на Indy

Коллеги, нужна помощь!
Есть сетка, состоящая из 2-х компов. Сервер (на нём происходит видео захват) и клиент (принимает картинки). Использую idTcpServer и idTcpClient.
Я написал прогу, которая пересылает видео по сети , НО! конкретно для этого случая. Всё отлично работает!
Теперь задача несколько другая. Есть один сервак и два клиента. Суть та же: раздать видео на два клиента. Я добавил в сеть ещё один комп, и, соответственно запускаю прогру клиента на 2-х клиентских машинах. И конечно как только я запускаю второго клиента, он падает (и первый тоже), а сервак работает.
Вот код клиента:
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
form1.IdTCPClient1.WriteLn('<SendImage>');
      stream.Position:= 0;
      form1.IdTCPClient1.ReadStream(stream);
      stream.Position:= 0;
      jp.LoadFromStream(stream);
      form1.Image1.Canvas.StretchDraw(form1.Image1.ClientRect,jp);
end;
Код сервака:
Код:
procedure TForm1.ImageServerTIdCommandSendImageCommand(
  ASender: TIdCommand);
var  temp:boolean;
begin
try
 repeat
  try
   temp:=true;
   fStream.Clear;
   fStream.Position:=0;
   mybmp.SaveToStream(fStream); 
   except
      temp:=false;
   end;
 until temp;
  ASender.Thread.Connection.WriteStream(fStream, True, True);
 finally
 end;
end;
Суть в следующем, клиент просылает команду <SendImage>, а сервер в ответ кидает картинку. Вероятно ошибка из-за того что два клиента с одинаковыми командами просят у сервака картинку, а он не знает кому именно отдать. Вот он и виснет когда я запускаю второго клиента.
Вопрос тогда как быть? Для чего тогда свойство Bindings в idTcpServer?
Пробовал через TForm1.idTcpServerExecute , на клиенте ничего нету.
Если использовать UDP сервер c Broadcast.enable:=true, то как в этом случае надо будет переписать код?
Yur@ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как отправить видео захват(с веб-Кам.) Клиент->Сервер->Клиент RODNOC Мультимедиа в Delphi 17 03.10.2010 22:31
Сервер и клиент Indy (delphi) Nice42ru Помощь студентам 0 09.12.2009 19:33
Возможно-ли Клиент-серверное приложение типа Клиент(Pascal) а сервер(CGI)? Demol Работа с сетью в Delphi 1 21.04.2009 16:18
сервер клиент indy мандарин Работа с сетью в Delphi 1 01.06.2007 00:40