#iphone #networking
#iPhone #сеть
Вопрос:
Я пытаюсь создать P2P-приложение для iPhone. Если я знаю чей-то ip-адрес и номер порта (я собираюсь использовать фиксированный номер порта), то могу ли я отправить пакет человеку, независимо от сети, к которой принадлежит человек, и компании-провайдера, которой он пользуется?
В принципе, я собираюсь настроить централизованный сервер, и пользователи обновят свой IP-адрес (я собираюсь использовать фиксированный номер порта) на сервере. Если я хочу кому-то что-то отправить, я могу получить IP-адрес этого человека с сервера, создать сокет и отправлять через сокет все, что захочу…
Мне было интересно, должен ли я рассмотреть что-то еще…
Заранее спасибо
Ответ №1:
Здесь необходимо учитывать определенные моменты.
- Сеть и провайдер, к которому принадлежит пользователь, не являются проблемой в любом случае (если, конечно, не происходит какая-то странная фильтрация пакетов и т.д.)
- В вашем случае сервером будет ваш собственный сервер (мы будем называть его serverX). Сервер не подключается к клиентам (iosA, iosB и т.д.), Они подключаются к серверу.
- Что приводит к: ip и порт клиентов не имеют значения для вас (скорее всего, не для этого)
- Ваши клиенты могут извлекать информацию с сервера (используя множество библиотек или методов, я бы рекомендовал ASIHTTPRequest), или сервер может отправлять сообщения через службы уведомлений
Ответ №2:
Да, в этом вся идея схемы интернет-адресов.
Ответ №3:
Да, вы можете. Но если устройство подключено через Wi-Fi, оно может находиться за брандмауэром. И этому брандмауэру может потребоваться перенаправление портов.
Комментарии:
1. каков наилучший способ настроить номер порта, чтобы избежать этой проблемы?
Ответ №4:
Я настоятельно рекомендую асинхронный сокет Cocoa. Это сторонний проект с открытым исходным кодом. https://github.com/robbiehanson/CocoaAsyncSocket
На сайте также есть несколько базовых примеров проектов, с которых вы сможете начать. У меня большой опыт работы с этим фреймворком.
Вы также можете проверить это: http://oreilly.com/iphone/excerpts/iphone-sdk/network-programming.html Это стандартное руководство по CFNetwork и инструкция.