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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.10.2015, 07:53   #1
mitiay
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 288
По умолчанию нужна помощь в понимании сокетов и indy

Подскажите пожалуйста, есть сервер и два клиента.На форме у клиентов есть стандартная кнопка.Как сделать так чтоб при нажатии на кнопку, кнопка исчезала и другие клиенты ее не видели(то есть как бы "режим реального времени )")

Делал так Клиент 1 нажимает на кнопку,отправляет команду на сервер сервер отправляет всем клиентом команду.Это работает - только при условии что эти два клиента были подключены в этот момент.А вот если клиент 1 был подключен и нажал на кнопку а второй подключился поже то у клиента 2 кнопка так и будет видна.

Может лучше это реализовать на indy, а не на сокетах?В общем нужна помощь
и в чем разница между совкетами и инди?

Последний раз редактировалось mitiay; 24.10.2015 в 10:26.
mitiay вне форума Ответить с цитированием
Старый 24.10.2015, 12:59   #2
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

Сохраняете состояние на сервере, при подключении клиенторм раздовать это состояние.

инди просто обертка
come-on вне форума Ответить с цитированием
Старый 24.10.2015, 16:21   #3
mitiay
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 288
По умолчанию

Цитата:
Сообщение от come-on Посмотреть сообщение
Сохраняете состояние на сервере, при подключении клиенторм раздовать это состояние.
Можно по подробнее? или пример
mitiay вне форума Ответить с цитированием
Старый 24.10.2015, 16:53   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Подробнее? Ну в программе сервера сделай некую переменку, которая будет хранить состояние кнопки (boolean). Каждый из клиентов, кто нажимает у себя кнопку, посылает запрос на изменение этой переменки. Соответственно сервер рассылает всем ее состояние (в цикле к примеру), или отвечает когда клиент подключается.
Пример можно дать тогда, когда ты покажешь как сделал свое ПО.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.10.2015, 16:56   #5
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

Так вроде все должно быть понятно. Тот кто регулирует видимостью кнопок и т.п. отправляет комманду на сервер. Она сохраняеться на сервере в какомто хранилище (база данных, файл, память ...) и также отправляется всем клиентам.
Когда новый клиент подписывается, то ему сразу отправляеться это сохраненная информация. Таким образом вы достигните желаемого.

Последний раз редактировалось come-on; 24.10.2015 в 17:39.
come-on вне форума Ответить с цитированием
Старый 25.10.2015, 10:59   #6
mitiay
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 288
По умолчанию

Всем спасибо разобрался!Подскажите как передать от клиента строки мемо на сервер в мемо в таком же порядке
mitiay вне форума Ответить с цитированием
Старый 25.10.2015, 12:16   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
в таком же порядке
А как ты в принципе передаешь строки? Покажи свой код.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.10.2015, 13:22   #8
mitiay
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 288
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А как ты в принципе передаешь строки? Покажи свой код.
ClientSocket1.Socket.SendText(memo2 .lines.text); вот так отправляю а как получить не знаю

Последний раз редактировалось mitiay; 25.10.2015 в 13:39.
mitiay вне форума Ответить с цитированием
Старый 25.10.2015, 13:41   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Чет не понял, у тебя вообще не описан механизм получения?
Или ты нарвался на болячку этого компонента с отсутствием склейки пакетов?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.10.2015, 07:40   #10
mitiay
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 288
По умолчанию

Код:
if edit1.Text = 'b1false' then   begin
for i := 0 to ServerSocket1.Socket.ActiveConnections-1 do
  ServerSocket1.Socket.Connections[i].SendText((edit1.Text) + (edit7.Text));
end;
  if edit2.Text = 'b2false' then     begin
for i := 0 to ServerSocket1.Socket.ActiveConnections-1 do
  ServerSocket1.Socket.Connections[i].SendText((edit2.Text)+(edit8.Text));
Вот так отправляю команды клиентам! Но проблема в том что первая команда работает нормально так как поступает первая!А в вот вторая криво.Получается так
b1falseb2false - То есть записывается в одну строку.Как это исправить?
mitiay вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Необходима помощь в понимании сокетов Antony41 Работа с сетью в Delphi 12 22.10.2015 22:00
Нужна помощь в понимании программы, написанной на С baltushka Помощь студентам 11 06.10.2011 00:50
Очень нужна помощь c матрицами, макросами в Excel. Заранее благодарен(поверьте, очень-очень нужна помощь) Farridjan Помощь студентам 1 03.07.2009 12:24
Очень нужна помощь с написанием программы... срочно(буду благодарен за помощь) 5Paladin5 Помощь студентам 3 02.07.2009 09:12
нужна помощь с INDY san72 Работа с сетью в Delphi 3 29.05.2009 20:57