2016-01-12 2 views
1

Мне нужно, чтобы две машины связывались через Wi-Fi без использования IP (я не хочу использовать IP-сокеты). Решение предпочтительно должно работать с обоими режимами WiFi (инфраструктура, такая как обычный WiFi и ad-hoc, такой как WiFi Direct). Код примера C# был бы отличным.Получите два устройства для связи через WiFi без прохождения через IP (p2p только через уровни WiFi)

Я много искал и не мог найти код, похожий на программу сокета, которая отправляет и принимает данные между двумя машинами (p2p), но использует только WiFi без IP.

+0

Есть ли определенная причина, по которой вы хотите избежать IP? Чтобы обойти IP-адрес, вам в основном пришлось бы поговорить с драйвером устройства WiFi, который ОС не позволяет вам делать, и, скорее всего, изменится для разных устройств. Для меня это похоже на то, что UDP (который использует IP) мог бы добиться тех же результатов при меньших затратах. –

+0

У этого вопроса есть несколько проблем: Сокеты - это абстракция, предоставляемая операционной системой поверх TCP, которая использует IP для надежной доставки данных. Wi-Fi Direct не работает в режиме 802.11 «ad-hoc», он использует скрытые инфраструктурные сети. – alfwatt

+0

Прежде всего, спасибо за ваши комментарии. Однако мой вопрос не ответил и, возможно, не очень ясен: есть ли способ заставить две машины обмениваться данными через Wi-Fi без использования каких-либо слоев за пределами уровня 2 в модели OSI? Если для этого существует образец кода C#? Я надеялся, что в .NET будет API, подобный, например, API последовательной связи, в котором машина могла бы слушать, получать и отправлять данные через WiFi без необходимости использования TCP/IP. Связь будет использовать MAC-адреса WiFi для поиска машин, а не IP-адресов. – samman

ответ

0

Платформа многопользовательской связи Apple поддерживает настройку однорангового соединения без участия разработчика, напрямую связанного с IP-подключением, но использует IP для доставки данных и ограничена устройствами Apple.

Это можно сделать, если вы хотите написать низкоуровневый код c, чтобы сделать это, но любое решение, которое позволяет избежать IP, должно будет заново создать значительную часть протокола, чтобы быть полезным, и почти наверняка потребовалось бы гораздо больше чем просто использование IP-функций ОС.

Для очень простых форм связи между станциями Wi-Fi вы можете использовать пользовательские Action Frames и Information Elements, но для этого требуется очень низкий уровень доступа к драйверу.

+0

Любые документы для чтения в Формах действий и информационных элементах? Любые примеры в C# для низкоуровневого доступа к драйверам? – samman

+0

@samman для Action Frames и Information Elements вы можете обратиться к семейству спецификаций IEEE 802.11: http://standards.ieee.org/about/get/802/802.11.html – alfwatt

+0

Для подключения кода C# смотрите учебное пособие по платформе: https://msdn.microsoft.com/en-us/library/aa288468(v=vs.71).aspx – alfwatt

Смежные вопросы