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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2011, 18:50   #1
Небесный
Зелень
Форумчанин
 
Аватар для Небесный
 
Регистрация: 03.02.2007
Сообщений: 302
По умолчанию tcpserver и много client'ов обмен сообщениями

Суть вопроса состоит в том.
Есть tcpserver и много tcpclient'ов.

Отправка клиентом к серверу - это без проблем.
Сервер:
Код:
procedure TForm1.tsAccept(Sender: TObject;
  ClientSocket: TCustomIpClient);
begin
  log.Lines.Add(ClientSocket.Receiveln);
end;
Клиент:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  try
    if tc.Connect then
      tc.Sendln('hello');
  finally
    tc.Disconnect;
  end;
end;
Это случай работает и работает нормульно.
Теперь у меня еще один случай, не только клиенты отправляют сообщения серверу, но также и сервер должен отправлять клиентам сообщения.
Ну, например клиенту_1 - нужно отправить сообщение "привет", клиенту_2 - "досвидание". Заведомо серверу ведомо айпишки и порты клиентов.


Можно ли из сервера отправлять нужному клиенту сообщение?
Или нужно будет мне ставить на сервере клиента, а у клиентов ставить сервера, ну тоесть имеется ввиду компоненты TCP...
Не хочется разводить балаган компонентов.

Благодарю за помощь!!!
Небесный вне форума Ответить с цитированием
Старый 12.12.2011, 20:27   #2
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

Я сделал "балаган"... за одно и решил проблему с передачей файлов и прочих рюшечек + снизится нагрузка на сеть (сервер) если будет возможность некоторых вещей делать напрямую между клиентами.
+ ещё грабли.. у меня допустим сервер что то высчитывает для клиента 1... то тут либо пускать потоки или выстраивать очередь задач для второго клиента. А у вас если сервер будет отвечать в "экзекьюте"(не помню как пишется)... второй клиент может не дождаться ответа и отвалиться.
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 12.12.2011, 20:51   #3
Небесный
Зелень
Форумчанин
 
Аватар для Небесный
 
Регистрация: 03.02.2007
Сообщений: 302
По умолчанию

Тоесть советуете использовать на сервере для приема от клиентов - TcpServer, а для передачи клиентам использовать TcpClient?
Аналогично и на клиента повесить TcpServer и TcpClient.

Мне то всего то нужно от сервера клиенту передавать некие инструкции(0 или 1, или 2 - заведомо клиенту извесно, что за номер инструкции), а в случае запроса клиента на сервер, чтобы сервер там что-то отвечал.
Небесный вне форума Ответить с цитированием
Старый 12.12.2011, 20:57   #4
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

я бы посоветовал ещё больше... если есть заделки на будущие... разработать систему команд.
допусти 1 клиент пишет "привет"
это посылается серверу... в виде "10:Привет"
на сервере стоит обработчик
типо
Код:
commanda:=strtoint(copy(str,1,2);
case commanda of
10: //разослать всем клиентам сообщение
и так можно сделать различную систему команд..
команды можно складывать в лист бок..и выполнять поочередно... тем самым будет что то типо очереди задач... можно и потоки потом подключить...
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 12.12.2011, 21:52   #5
Небесный
Зелень
Форумчанин
 
Аватар для Небесный
 
Регистрация: 03.02.2007
Сообщений: 302
По умолчанию

Ну, что ж тогда большое спасибо.
Главное я узнал, чтобы сервер отсылал сообщения клиентам, нужно ставить пару TcpClient-Server, как на сервере, так и на клиенте. Вот это собственно и интересовало.
А, за идею разработки систем команд спасибо.
Небесный вне форума Ответить с цитированием
Старый 13.12.2011, 10:43   #6
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

Цитата:
Сообщение от Небесный Посмотреть сообщение
Ну, что ж тогда большое спасибо.
Главное я узнал, чтобы сервер отсылал сообщения клиентам, нужно ставить пару TcpClient-Server, как на сервере, так и на клиенте. Вот это собственно и интересовало.
А, за идею разработки систем команд спасибо.
НЕПРАВДА!!! на сервере только сервер на клиенте только клиент...
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 13.12.2011, 10:54   #7
Небесный
Зелень
Форумчанин
 
Аватар для Небесный
 
Регистрация: 03.02.2007
Сообщений: 302
По умолчанию

Цитата:
Сообщение от Slym Посмотреть сообщение
НЕПРАВДА!!! на сервере только сервер на клиенте только клиент...
Хорошо, тогда покажите пример, как из сервера отослать клиенту сообщение, зная айпи клиента. Но, это не должен быть ответ, на запрос. А, именно захотел сервер отослать определенному клиенту сообщение - взял и отослал.
Небесный вне форума Ответить с цитированием
Старый 13.12.2011, 13:40   #8
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Вот здесь посмотрите может что найдёте http://programmersforum.ru/showthread.php?t=144809
SERG1980 вне форума Ответить с цитированием
Старый 13.12.2011, 17:30   #9
Небесный
Зелень
Форумчанин
 
Аватар для Небесный
 
Регистрация: 03.02.2007
Сообщений: 302
По умолчанию

SERG1980, впринцыпе это то, что я искал.
Но, взвесив что лучше, или добавить один компонент или работать с таймером каждые 100 мс - решил выбрать пару клиент-сервер, как на сервере, так и на клиенте.
А, вообще SERG1980, благодарю за ссылку - с удовольствием занес данную тему к себе в фак на жесткий.
Небесный вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обмен сообщениями между сервером и клиентом Don Karleone Работа с сетью в Delphi 3 25.02.2011 15:24
Обмен сообщениями(миничат) через IdTcpClient и idTcpServer =LeonZone= Работа с сетью в Delphi 3 07.08.2010 13:01
Обмен сообщениями без IP адреса Иллидан Работа с сетью в Delphi 9 29.02.2008 20:48
обмен сообщениями между клиентом и сервером используя ClientSocket и ServerSocket xTANATOSx Работа с сетью в Delphi 3 04.10.2007 15:17
Обмен сообщениями между IdTcpClient и idTcpServer Teen4jump Работа с сетью в Delphi 3 05.09.2007 09:25