Перейти к содержанию
Fire Monkey от А до Я
  • 0

Поиск сервера


Akromd

Вопрос

Добрый вечер.

Только начал изучать технологию Datasnap. Разобрался с простейшим сервером и клиентом, находясь в одной сети все прекрасно работает.

Но сейчас ставлю перед собой задачу, что клиенту изначально неизвестен ip сервера, но знаем что он находится в одной сети. Сразу возникает мысль послать широковещательный пакет от клиента и при получении его сервером отправить ответ.

Теперь вопрос, как послать такой пакет? Если кто то может подсказать где почитать про это и посмотреть примеры, буду очень признателен.

Ссылка на комментарий

Рекомендуемые сообщения

  • 0
  • Модераторы

даже в теории сервер на мобиле не должен быть)

может кто пользуется (я нет) оф. приложение фейсбука и есть сервер.

в теории: 3rd party приложения общаются не с сервером (api facebook.com), а приложением установленным в телефоне через SDK.

что в реале: батарейка улетает в 0, дробление единого сервиса на несколько приложении (имхо)

 

Ссылка на комментарий
  • 0
1 час назад, ZuBy сказал:

даже в теории сервер на мобиле не должен быть)

может кто пользуется (я нет) оф. приложение фейсбука и есть сервер.

в теории: 3rd party приложения общаются не с сервером (api facebook.com), а приложением установленным в телефоне через SDK.

что в реале: батарейка улетает в 0, дробление единого сервиса на несколько приложении (имхо)

 

Да, идейно все это правильно, что сервер на мобиле ересь)

Но как тогда поступают в случае общения двух клиентов минуя сервер?

То есть обычно (в моем понимании) реализуется запрос клиента у сервера чего либо, таким образом получая и изменяя данные на сервере. В результате другой клиент может получить измененную информацию с сервера. А если мы хотим миновать сервер? чтобы клиент делал запрос сразу другому клиенту? А сервер используем только для того, чтобы в первый раз лишь сказать клиентам где они находятся.

Ссылка на комментарий
  • 0
2 минуты назад, krapotkin сказал:

и как же два клиента общаются, минуя сервер, интересно? 

я и так знаю, где находятся мои клиенты - за роутером в локальной сети

Имеется ввиду, что один из них становится сервером для другого клиента.

Ссылка на комментарий
  • 0
6 минут назад, krapotkin сказал:

ну, ладно, пусть становится, а по какому IP доступ-то? 192.168.143.41 ?

Имеет значение? Я не понимаю технологии процесса,через какие компоненты все это осуществить в Delphi. Если использовать datasnap то все понятно, когда у нас сервер на компе и через него все запросы. Но что сделать, если мы хотим сервер облегчить, оставив в функционале только связывание клиентов друг с другом.

Ссылка на комментарий
  • 0
  • Модераторы

такс, давайте разберемся. для ясности

1) приложения на каких платформах будет работать?

2) будет использоваться БД?

3) всегда приложения в одной сети будет?

4) datasnap обязательно?

Ссылка на комментарий
  • 0
7 минут назад, ZuBy сказал:

такс, давайте разберемся. для ясности

1) приложения на каких платформах будет работать?

2) будет использоваться БД?

3) всегда приложения в одной сети будет?

4) datasnap обязательно?

Да, отбъясняю я не очень)

1. Приложение мультиплатфотрменное. Все что поддерживает FMX на тех платформах и будет приложение.

2. БД пока не используется, и не планируется. Но мало ли.

3. Не всегда. Чаще всего не в одной сети, для этого использую стационарный сервер со статическим ip. Но хотелось бы чтоб когда два и более приложения были в одной сети, они имели возможность соединятся без стационарного сервера.

4. Не обязателен. Просто ничего другого мультиплатформенного не придумал. И с Datasnap уже что-то понял и это работает.

Ссылка на комментарий
  • 0
  • Модераторы

как по мне, если есть белый ip, то больше ничего не нужно выдумывать (масштабировать проект проще)

 

Ссылка на комментарий
  • 0
4 минуты назад, krapotkin сказал:

тетеринг в одной сети отработает нормально

можно и датаснап использовать

а в разные сети только через центральный сервер

С тетерингом какие то проблемы, но это другая тема, мне еще разбираться и разбираться.

С разными сетями все работает, но все вычисления производятся на сервере (их довольно много),а клиенты запросами получают данные. Чем больше клиентов, тем больше вычислений. Соответственно и хотелось бы скинуть вычисления на клиентов (Разбить на группы) и данные будут передаваться между этими группами. А на сервер посылаются только итоги.

Ссылка на комментарий
  • 0
31 минуту назад, Akromd сказал:

Соответственно и хотелось бы скинуть вычисления на клиентов

Как-то не понятно, что мешает каждому клиенту читать данные с сервера, проводить вычисления, итоги скидывать на сервер?

Изменено пользователем GASCHE
Ссылка на комментарий
  • 0
1 час назад, GASCHE сказал:

Как-то не понятно, что мешает каждому клиенту читать данные с сервера, проводить вычисления, итоги скидывать на сервер?

Проблема в том что все вычисления зависят от данных других клиентов. Без них никаких вычислений не будет.

Ссылка на комментарий
  • 0

Перефразирую, читать данные других клиентов с сервера, проводить вычисления, итоги и свои данные скидывать на сервер.

12 часов назад, Akromd сказал:

они имели возможность соединятся без стационарного сервера

Это возможно, на каждом клиенте поднимаете свой сервер, который будет слушать запросы других клиентов и скидывать им требуемые данные. Но не думаю, что это будет проще чем работа с одним сервером.

Ссылка на комментарий
  • 0
3 часа назад, GASCHE сказал:

Перефразирую, читать данные других клиентов с сервера, проводить вычисления, итоги и свои данные скидывать на сервер.

Это возможно, на каждом клиенте поднимаете свой сервер, который будет слушать запросы других клиентов и скидывать им требуемые данные. Но не думаю, что это будет проще чем работа с одним сервером.

И мы опять возвращаемся к вопросу как поднять сервер на android)

Ссылка на комментарий
  • 0
1 час назад, Akromd сказал:

И мы опять возвращаемся к вопросу как поднять сервер на android)

В данном случае под сервером понимается серверный сокет с необходимыми обработчиками событий. Смотрите индейцев и выбирайте любой понравившийся.

Но гораздо проще взять готовую технологию - AppTethering. С самостоятельной реализацией вы рискуете погрязнуть в энтомологоии, особенно - если возьмете минималистичный протокол (TCP/IP).

Обратите внимание, что в любом случае устройства сконнектятся друг с другом только если они находятся в одной подсети.

Ссылка на комментарий
  • 0
1 час назад, kami сказал:

В данном случае под сервером понимается серверный сокет с необходимыми обработчиками событий. Смотрите индейцев и выбирайте любой понравившийся.

Но гораздо проще взять готовую технологию - AppTethering. С самостоятельной реализацией вы рискуете погрязнуть в энтомологоии, особенно - если возьмете минималистичный протокол (TCP/IP).

Обратите внимание, что в любом случае устройства сконнектятся друг с другом только если они находятся в одной подсети.

Об телеринге я уже задумался. Однако первоначальная идея что устройства соединяются не в одной подсети.

Видимо все таки придется копать инди, а так хотелось с датаснапом легко и быстро)

Ссылка на комментарий
  • 0

Здравствуйте! Я не спец в сетях, но дискуссия интересная :)

В 4.1.2017 в 20:01, Akromd сказал:

Но сейчас ставлю перед собой задачу, что клиенту изначально неизвестен ip сервера, но знаем что он находится в одной сети. Сразу возникает мысль послать широковещательный пакет от клиента и при получении его сервером отправить ответ.

Теперь вопрос, как послать такой пакет? Если кто то может подсказать где почитать про это и посмотреть примеры, буду очень признателен.

Нужно установить DataSnap на известный порт и из одной сети бросить пакет на 0.0.0.0 из любого клиента. Или все не так просто?

 

В 6.1.2017 в 15:40, ZuBy сказал:

может кто пользуется (я нет) оф. приложение фейсбука и есть сервер.

Я всегда думал, что это long poll requests или websockets. А это как бы не сервер, потому что соединение инициировано самим приложением...

 

14 часов назад, GASCHE сказал:

Это возможно, на каждом клиенте поднимаете свой сервер, который будет слушать запросы других клиентов и скидывать им требуемые данные. Но не думаю, что это будет проще чем работа с одним сервером.

К сожалению, два клиента не могут соединиться друг с другом, даже если они сервера, потому что сети разные :( А соединение двух клиентов должно обязательно проходить через один сервер. Мне кажется, делается так: сервер получает пакеты одного клиента и просто перебрасывает их второму. VPN так работает, например.

Если я не прав, поправьте, мини проверка своих знаний получается :) 

Изменено пользователем Zawuza
Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...