2009-07-09 2 views
1

Может ли кто-нибудь указать мне на какой-то учебник о том, как настроить метод ping с помощью C-сокетов? Используя руководство Beej, я смог установить соединение между двумя устройствами, но теперь я хочу настроить метод, который пингует для всех доступных устройств, прежде чем начать фактическое соединение. Я никогда не делал этого раньше, так что бы вы сделали что-то вроде настройки многоадресного сокета для трансляции пустого пакета данных, а затем, чтобы получатель этого пустого пакета заполнил его своим IP-адресом и вернул теперь полный пакет данных, чтобы вы иметь адрес, чтобы начать соединение? Любой гид/помощь будет оценена по достоинству!C Sockets Ping Command?

+0

Итак, вы хотите пинг, который использует протокол ВКФМА, или широковещательный UPD? –

+0

ICMP извините, http://ru.wikipedia.org/wiki/Internet_Control_Message_Protocol –

ответ

2

Большинство современных стеков IP не будут отвечать на запрос ping на широковещательный адрес. Эта функция была использована для атак типа «отказ в обслуживании».

Реализация реализации реальный пинг не будет легко, я предлагаю вам использовать существующую LIB: http://www.kernelthread.com/projects/hanoi/html/icmp.html

Но вам придется вручную перебирать все IP addrs в вашей подсети, чтобы получить их ответить.

+1

Согласен. Не нужно изобретать велосипед. –

+0

Ну, похоже, это единственный способ, которым я смогу сделать то, что хочу сейчас, если только не могу придумать что-то еще. В основном я занимаюсь несколькими устройствами iPod touch и созданием распределенной вычислительной установки. Идея состоит в том, чтобы один iPod мог выполнять ping для серверов (настройка на других iPod touch), и если они доступны (в диапазоне), то отправьте им задачу. Я использую C-сокеты (даже не упоминаю CFNetwork, у меня было достаточно проблем из этой глупой структуры lol), чтобы настроить соединения. Любые идеи о том, как выполнить ping без повторения через IP в моей подсети? –

+0

Вместо того, чтобы иметь iPod ping на каждом устройстве, почему бы не каждое устройство транслировать пакет с указанием его доступности? –