Как искать все компьютеры в сети, которые используют мой сервис? - PullRequest
0 голосов
/ 05 декабря 2011

У меня есть пользовательская пара сокетов клиент / сервер (TJDServerSocket и TJDClientSocket), которые обертывают TServerSocket и TClientSocket в модуле ScktComp. У меня нет проблем, которые нужно исправить, но я бы хотел кое-что узнать. Я хотел бы добавить функцию на стороне клиента для автоматического поиска в сети любых экземпляров сокета сервера (особенно моего серверного компонента).

Я открыт для любых предложений, но должен быть конкретным для использования модуля ScktComp в Delphi 7.

Вот ссылка на мои компоненты.

Ответы [ 4 ]

6 голосов
/ 05 декабря 2011

Никогда не использовал TServerSocket и TClientSocket самостоятельно, и у меня нет файлов справки в пределах досягаемости, поэтому я не могу сразу увидеть, будет ли это работать с этими компонентами. Для проекта, который я сделал, мне тоже нужно было что-то подобное. В итоге я использовал UDP для трансляции запроса на обнаружение (конечно, в той же подсети). Сервер, прослушивающий конкретный порт для такого запроса, ответит своими данными обратно. Когда существует несколько серверов (что может случиться редко), клиент просто выбирает сервер с необходимыми услугами и наименьшей нагрузкой. Эта нагрузка была частью данных, которые сервер отправлял обратно. Это сработало хорошо, не так уж сложно написать, и оказалось достаточно эффективным.

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

Надеюсь, это поможет.

2 голосов
/ 05 декабря 2011

Существует несколько стандартных протоколов для обнаружения услуг. См. Например: http://en.wikipedia.org/wiki/Zero_configuration_networking

0 голосов
/ 05 декабря 2011

Поиск так же прост, как сканирование портов.

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

С более подробной информацией, такой как информация о сети (для кого она?), Я могу предложить более точный ответ.

0 голосов
/ 05 декабря 2011

Почтовые ящики - хороший вариант здесь.Он будет транслироваться на каждый компьютер в вашей подсети.См. Ответ Йероена на этот вопрос: Предложения по написанию системы обмена сообщениями TCP IP (клиент / сервер) с использованием Delphi 2010

...