Я хотел бы знать, как реализовать функцию обнаружения в P2P-сети LAN. Я не хочу использовать P2P-библиотеку .NET 3.5, я хочу спроектировать ее сам. В тот момент, когда пользователь нажимает кнопку Connect, он отправляет широковещательное сообщение в локальной сети, информируя других пиров, что он доступен. другие одноранговые узлы в принимающем потоке идентифицируют это сообщение и по своей воле могут установить соединение. Например: Машина 1 с IP-адресом 192.168.0.101 нажимает кнопку подключения и отправляет сообщение «Command.Connect» по адресу «255.255.255.255» для широковещательной передачи. Машина 2 с IP-адресом 192.168.0.102 ожидает в потоке сообщений Udp и идентифицирует этот одноранговый узел с IP-адресом 192.168. .0.102 Когда пользователь нажимает "Отключить", аналогичным образом отправляется другая команда "Command.Disconnect". Подскажите, пожалуйста, хорошая ли идея для обнаружения пиров в локальной сети?
Функция обнаружения P2P
Ответы (1)
Если вы разрабатываете его только для простой локальной сети, вы также можете рассмотреть возможность использования IP-Multicast вместо широковещательной передачи UDP. Используя IP-Multicast, ваш новый партнер будет отправлять сообщение только заинтересованным партнерам, но в случае широковещательной рассылки ваше сообщение будет отправлено на все компьютеры, даже если на них не запущена ваша программа чата. Однако у обоих вариантов есть свои плюсы и минусы, и это зависит от ваших требований и будущих планов для вашего приложения.
Во-вторых, если у вас есть возможность иметь сервер в системе, его можно настроить более точно. Вы можете поддерживать обмен сообщениями в чате по одноранговой модели, но когда какой-то одноранговый узел подключается к сети, он может зарегистрироваться на выделенном сервере и попросить сервер предоставить список других зарегистрированных одноранговых узлов, а затем вы можете напрямую взаимодействовать с другими одноранговыми узлами. Это также будет полезно, если вы собираетесь добавить такие функции, как аутентификация и т. Д.