Использование iPhone в качестве сервера TCP и UDP — открытые порты?

Мне нужно отправлять и получать пакеты через UDP и TCP в iPhone и на сервере. Но я подумал, что если я хочу отправлять пакеты клиенту (iPhone), он... своего рода сервер.

Итак, допустим, я отправляю и получаю пакеты на iPhone через порт 2347. Нужно ли мне открывать порт на iPhone или что-то в этом роде? Есть ли встроенный брандмауэр в iPhone?


person Eli_Rozen    schedule 18.09.2010    source источник
comment
Под пакетами вы подразумеваете пакеты? Эти два слова означают разные вещи в программировании.   -  person Shaggy Frog    schedule 19.09.2010
comment
Я не профессионал в UDP и TCP, но я имею в виду сообщения, которые отправляются с и на клиент/сервер.   -  person Eli_Rozen    schedule 19.09.2010


Ответы (2)


На айфоне нет брандмауэра. Однако в 99% случаев у телефона не будет общедоступного IP-адреса. Это может быть Wi-Fi за маршрутизатором или сотовая сеть, скорее всего, за пулом NAT. В любом случае, у вас нет доступа ни к одному из этих устройств, ни к вашим пользователям в контексте сотовой связи (и, возможно, к некоторым случаям использования Wi-Fi). Подумайте о том, чтобы сделать это по-другому.

person jer    schedule 18.09.2010
comment
Хммм.. Какой еще способ получить пакеты? знак равно - person Eli_Rozen; 19.09.2010
comment
99% времени, возможно, немного преувеличено. Всякий раз, когда телефон подключен к сети Wi-Fi, устройства, подключенные к той же сети Wi-Fi, конечно же, могут подключаться к нему напрямую. - person Nick; 19.09.2010
comment
Приложение не предназначено для пользователей на одном маршрутизаторе, приложение представляет собой MMORPG — множество пользователей со всего мира получают и отправляют пакеты на главный сервер. - person Eli_Rozen; 19.09.2010
comment
Зачем тогда вам нужно, чтобы пользователи выступали в роли серверов? - person jer; 19.09.2010
comment
Другой способ отправить пакеты с основного сервера пользователям? Отправить с айфона не проблема, проблема получить с сервера. - person Eli_Rozen; 19.09.2010
comment
Отправьте данные обратно на IP-адрес, с которого вы получили запрос, пусть NAT на своем конце обрабатывает сопоставление их с общедоступного адреса на их частный адрес. - person jer; 19.09.2010
comment
Тогда вам действительно не следует думать о создании сетевого приложения, пока вы не поймете, как работают известные вам сети. - person jer; 19.09.2010
comment
Вы говорите, что брандмауэр на маршрутизаторе не будет проблемой, если я отправлю данные на тот IP-адрес, с которого я получил данные? - person Eli_Rozen; 19.09.2010
comment
Как только вы откроете сокет на своем сервере, вы можете свободно отправлять данные туда и обратно, пока один конец не закроет сокет. Сетевое программирование — непростая задача, и перед тем, как начать, вы должны иметь некоторое представление о том, как работают сети. - person rpetrich; 19.09.2010

По умолчанию на iPhone нет брандмауэра. Если вам не нужно, чтобы iPhone действовал как сервер, т. е. привязывал порт, вы можете заставить сервер отправлять пакеты обратно на iPhone, используя информацию, в которой они были получены, т. е. IP и порт, используя протокол ваш выбор, например, TCP или UDP.

person justanotherguest    schedule 16.02.2014