Могу ли я отправлять пакеты, если я знаю IP-адрес получателя и номер порта?

#iphone #networking

#iPhone #сеть

Вопрос:

Я пытаюсь создать P2P-приложение для iPhone. Если я знаю чей-то ip-адрес и номер порта (я собираюсь использовать фиксированный номер порта), то могу ли я отправить пакет человеку, независимо от сети, к которой принадлежит человек, и компании-провайдера, которой он пользуется?

В принципе, я собираюсь настроить централизованный сервер, и пользователи обновят свой IP-адрес (я собираюсь использовать фиксированный номер порта) на сервере. Если я хочу кому-то что-то отправить, я могу получить IP-адрес этого человека с сервера, создать сокет и отправлять через сокет все, что захочу…

Мне было интересно, должен ли я рассмотреть что-то еще…

Заранее спасибо

Ответ №1:

Здесь необходимо учитывать определенные моменты.

  1. Сеть и провайдер, к которому принадлежит пользователь, не являются проблемой в любом случае (если, конечно, не происходит какая-то странная фильтрация пакетов и т.д.)
  2. В вашем случае сервером будет ваш собственный сервер (мы будем называть его serverX). Сервер не подключается к клиентам (iosA, iosB и т.д.), Они подключаются к серверу.
  3. Что приводит к: ip и порт клиентов не имеют значения для вас (скорее всего, не для этого)
  4. Ваши клиенты могут извлекать информацию с сервера (используя множество библиотек или методов, я бы рекомендовал ASIHTTPRequest), или сервер может отправлять сообщения через службы уведомлений

Ответ №2:

Да, в этом вся идея схемы интернет-адресов.

Ответ №3:

Да, вы можете. Но если устройство подключено через Wi-Fi, оно может находиться за брандмауэром. И этому брандмауэру может потребоваться перенаправление портов.

Комментарии:

1. каков наилучший способ настроить номер порта, чтобы избежать этой проблемы?

Ответ №4:

Я настоятельно рекомендую асинхронный сокет Cocoa. Это сторонний проект с открытым исходным кодом. https://github.com/robbiehanson/CocoaAsyncSocket

На сайте также есть несколько базовых примеров проектов, с которых вы сможете начать. У меня большой опыт работы с этим фреймворком.

Вы также можете проверить это: http://oreilly.com/iphone/excerpts/iphone-sdk/network-programming.html Это стандартное руководство по CFNetwork и инструкция.