Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Excel VBA, CAD, Софт, ОС, Windows, Ubuntu, Android, VPS
Win Api, Assembler, C++, Java, Pascal, Lazarus, Delphi, OpenGL, DirectX
C#, Qt, .NET, ASP.NET, Windows Forms, ADO.NET, Framework, WPF, UWP, WinRT, XAML
HTML, CSS, JavaScript, Ajax, PHP, Perl, Python, Ruby, SQL, WordPress, API, XML, JSON, ActionScript, Flash

Ответ
 
Опции темы
Старый 12.12.2011, 18:50   #1
Небесный
Зелень
Форумчанин
 
Аватар для Небесный
 
Регистрация: 03.02.2007
Сообщений: 302
Репутация: 37
По умолчанию 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...
Не хочется разводить балаган компонентов.

Благодарю за помощь!!!
__________________
http://5fan.ru/
Небесный вне форума   Ответить с цитированием
Старый 12.12.2011, 20:27   #2
BARNEY
Профессионал
 
Регистрация: 23.04.2009
Сообщений: 1,050
Репутация: 169

icq: 94-555555
По умолчанию

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

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

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

icq: 94-555555
По умолчанию

я бы посоветовал ещё больше... если есть заделки на будущие... разработать систему команд.
допусти 1 клиент пишет "привет"
это посылается серверу... в виде "10:Привет"
на сервере стоит обработчик
типо
Код:

commanda:=strtoint(copy(str,1,2);
case commanda of
10: //разослать всем клиентам сообщение

и так можно сделать различную систему команд..
команды можно складывать в лист бок..и выполнять поочередно... тем самым будет что то типо очереди задач... можно и потоки потом подключить...
__________________
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума   Ответить с цитированием
Старый 12.12.2011, 21:52   #5
Небесный
Зелень
Форумчанин
 
Аватар для Небесный
 
Регистрация: 03.02.2007
Сообщений: 302
Репутация: 37
По умолчанию

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

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

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

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

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



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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




21:49.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Покупайте на сайте www.skinon.ru уникальные чехлы и наклейки для телефонов.
купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru