Версия для печати темы

Нажмите сюда для просмотра этой темы в оригинальном формате

WinCity.Ru _ Программирование _ Клиент/Сервер

Автор: Admin Четверг, 27 Сентября 2001, 0:00

Задача заключается в следующем:
На одной из машин в локальной сети запускается прогамма-сервер, которая переходит в состояние прослушивания определенного порта на предмет запроса соединения.
На другой машине запускается программа-клиент, которая должна соедититься с указанной программой-сервером. Клиенту известен номер порта, прослушиваемый сервером, а имя машины (адрес), на которой запущен сервер не известно.
Вопрос: как клиенту самому узнать адрес сервера.
Предполагаемое решение: клиент должен послать широковещательное сообщение в сеть, которое должне принять сервер и откликнутся.
Так вот как это нужно сделать (реализовать). Если кто-нибудь знает другой способ, пожалуйста напишите. Подойдут любые предложения для Delphi, С++.

P.S. Клиент и сервер реализованы с помощью Windows Socket.

Автор: Beerkoff Пятница, 28 Сентября 2001, 11:03

Я пишу в Дельфи.
Здесь не совсем широковещательный запрос должен быть.
Скорее клиент должен сначала определить все IP адреса в лок. сети, затем попытаться обратиться к каждому найденному компу и установить соединение с определенным портом.
С тем портом, с которым произойдет соединение дальше должна быть запущена процедура "авторизации".
Дело в том, что на других компах этот порт тоже может быть открыт, но работать на нем могут другие сервисы.
Единственное чего я не знаю, это как получить IP адреса всех компьютеров в сети.
Но думаю, что для этого можно обратиться к функции API (сетевой).

Автор: Anonymous Суббота, 26 Января 2002, 11:30

Здравствуйте.
Если Вам все-таки еще необходимо найти сервак, то предлагаю следующий способ:
- Для этого необходимо использовать компонент TNMUDP на страничке Internet (по-моему так).
- В его свойствах небходимо выбрать порты localport - с какого отправлять запрос и remoteport - на какой отправлять.
- В свойстве по-моему host надо указать IP-адрес, например 192.168.0.255 - т.е. запрос будет отправлен на все копмы у которых адрес лежит в пределах 192.168.0.0 - 192.168.0.255 (широковещательный запрос).
Куда этот компонент воткнуть - решать Вам. Будет ли сервер рассылать периодически запрос в сеть или клиент будет посылать запрос, а потом ждать ответ - все это выбирается в зависимости от задачи. Удачи wink.gif

Автор: bary3000 Понедельник, 03 Июня 2002, 7:54

Допустим клиент и сервер работают в сети ИНТЕРНЕТ, там ваша фишка не прокатит. Для таких вещей нужен сервер с постоянным адресом (напр. server.icq.com), а лучше с именем компа... Да-Да если программа в сети, то проще всего клиенту обритится на сервер по имени (и отчеству)... wink.gif

----
ВотЬ

Автор: Disa Понедельник, 03 Июня 2002, 14:14

Гм, а если не в инете, то либо делать клиентом броадкаст на поиск сервера, чтоб тот ему ответил, либо сервер сам делает широковещательные анонсы через какой-то промежуток времени.

Хотя, во всех цивильных программах такие вещи прописываются вручную.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)