Я разрабатываю приложение IOS, которому необходимо сделать стандартное TCP-соединение с одного iPhone (или iPod) на другое. Соединение работает хорошо между приложениями на симуляторе и устройстве, а также между двумя тренажерами.Подключить() от устройства ios to ios в той же подсети
Приложение использует POSIX соединить(), и я должен придерживаться этого способа, так как другие модули являются чисто С.
При вызове Connect() блоки приложений, и после того, как возвращается ошибка тайм-аута. Связь через Wi-Fi в локальной сети
Я обнюхал трафик и столкнулся с тем, что после подключения к симулятору устройство отправляет ARP, а после ответа отправляется стандартное рукопожатие TCP и сеанс.
В том же корпусе с iPhone <> iPhone останавливается после запроса ARP, потому что другой iPhone не отвечает на него. Кроме того, iOS отправляет только бесплатный ARP (объявляет, что это пара ip ip). Мой MAC, похоже, продолжает этот запрос, потому что его таблица ARP имеет запись iPhone, она не работает для другого iPhone.
Я пробовал работать с bonjour, но он также работает только с симулятором <> устройством.
Мой вопрос: Есть ли способ разрешить такое общение? Возможно ли, что это проблема только с моими iPhone'ами? Есть ли какой-либо явный способ сказать ОС отправить ответ для арп, или он каким-то образом заблокирован для трафика ios <> ios communication.
Я подозреваю, что ARP - это красная сельдь. Можете ли вы рассказать о том, как вы находите IP-адрес другого устройства? Если вы не используете какой-либо широковещательный пакет до установления соединения, вы не можете действительно знать IP-адрес однорангового устройства для подключения к нему - за неправильный IP-адрес ARP выходит из строя по дизайну. –
В моем примере я знаю IP другого устройства, проблема возникает, когда я хочу подключиться (он блокирует, отправляет ARP (на iPhone) для mac peer IP, а после ответа -> таймаут, он возвращается с ошибкой). При подключении к MAC отсутствует ARP, поскольку MAC кэширует iOS безвозмездные сообщения ARP, и он просто отправляет SYN. – macvek