Сценарий клиента сервера сокетов Java - PullRequest
0 голосов
/ 06 августа 2011

Это моя проблема:

Многопоточный сервер отправляет периодическое сообщение «любые клиенты там». Клиентские машины должны ответить сообщением только для того, чтобы доказать, что клиенты существуют на определенном IP.

Сомнения:

Так я должен поступить?

  1. Клиент отправляет многоадресное сообщение. 2. При условии, что на клиентском компьютере нет клиента, который не прослушивает определенный порт, т. Е. На клиенте не запущена какая-либо программа, как мне это сделать?
  2. Если 2 невозможно, как я узнаю, что в моей сети есть клиенты (без программы, запущенной на клиенте)? Пожалуйста, не предлагайте ZeroConf, так как я не могу перейти через кабели Ethernet здесь.

На самом деле, мне любопытно, как простая программа обнаружения сети может перечислять все остальные компьютеры в сети без какой-либо программы, запущенной на клиенте. Должен ли я использовать Java Ping ()?

1 Ответ

3 голосов
/ 06 августа 2011

Самый простой способ (начиная с Java 5) выяснить, существует ли конкретный клиент, это использовать метод isReachable() в InetAddress, который в значительной степени сделает все за вас (вам просто нужно указать Тайм-аут.) Ссылка Javadoc выше дает некоторое представление о том, как это работает. Это дает некоторые альтернативы, если вы до Java 5 (или просто хотите реализовать свою собственную вещь.)

Для нескольких клиентов посмотрите здесь , в котором показано, как транслировать на стороне сервера определенную группу.

...