Я пытаюсь создать архитектуру игры клиент/сервер и хотел бы начать тестирование игры, используя мой локальный Mac в качестве сервера. Я нашел несколько статей о Bonjour, но это касается только сетевого трафика. Моя цель - заставить это приложение работать через Интернет, подключившись к размещенному приложению на статическом адресе, чтобы облегчить преобразование данных. Однако я не могу понять, какие API Cocoa использовать для этой цели. Должен ли я использовать NSConnection
, NSStream subclasses
, или хороший 'ol C sockets
и еще много чего. Состояние игры уже построено в Objective-C и готово к запуску, когда у меня будет готово серверное оборудование. Любое понимание?Клиентское приложение iOS с сервером Mac
ответ
Я предлагаю вам использовать сокеты, так как они не являются трудными в использовании и являются стандартным способом. Я даже написал асинхронный класс обертки вокруг сокетов BSD: https://github.com/H2CO3/TCPHelper
Это для простых соединений один-к-одному TCP-протоколу, поддерживающих как IPv4, так и IPv6. Вы можете отправлять и получать необработанные NSData и, возможно, создавать протокол вокруг него.
Классы классов, такие как NSURLConnection, не являются специально для этой цели; а не взаимодействовать со стандартными HTTP-серверами (я полагаю, вы не хотите реализовывать полный HTTP-сервер для игры).
NSNetServices может подойдет вам как CFNetwork, но последнее немного сложнее в использовании. Если вы хотите использовать классы Foundation, я бы рекомендовал NSNetServices.
Надеюсь, это поможет.
Соединители NSConnection, NSStrean и C предназначены для различных нужд. Вам нужно указать потребности вашей игры и вид обслуживания, чтобы получить дополнительную помощь. Если вы хотите разработать клиент-серверное приложение, основанное на Интернете, а не на локальной сети, Bonjour не сможет помочь.
C сокеты и API-интерфейсы Cocoa, которые обертываются вокруг них, предназначены для работы с открытым сетевым потоком между клиентом и сервером. Преимущество наличия открытого потока состоит в том, что вы можете отправить сервер на сервер клиентам без запроса клиента. NSURLConnection в какао работает по-разному. С его помощью вы можете выполнять HTTP-запросы и получать от сервера отформатированные ответы.
Если ваше приложение основано на HTTP-запросах, я рекомендую вам взглянуть на NSURLConnection или AFNetworking в качестве сторонней альтернативы. Если ваше приложение опирается на открытые потоки, я рекомендую вам взглянуть на CFNetwork от Apple (оболочка C вокруг сокетов BSD, которая исходит из тех дней, когда Mac имел Carbon с большой производительностью, стабильностью и универсальностью) и GCDAsyncSocket, сторонней библиотеки, обернутой вокруг BSD Sockets, поддерживает Crand Central Dispatch, является Objective-C готовым и прекрасно работает.
Надеюсь, я помог.
Существует много разных способов достижения этого. Это зависит от того, как вы будете передавать данные и для чего они будут использоваться.
Во-первых, я бы установил имя хоста, которое вы можете использовать для целей развития в своей игре. Вы можете использовать что-нибудь вроде http://dyn.com/dns/, чтобы настроить это для своего Mac. Затем вы можете включить параметр компилятора, чтобы отключить URL-адрес разработки/производства.
Далее я бы рекомендовал использовать сокеты TCP для вашей игры (используя CocoaAsyncSocket - https://github.com/robbiehanson/CocoaAsyncSocket). Этот метод должен отлично работать в вашем случае использования.Поскольку вы делаете пошаговые данные (и поскольку все эти данные имеют жизненно важное значение), я бы не рекомендовал использовать сокеты UDP (но они работали бы, если бы вы только передавали положение, видео или аудиоданные, где потерянный пакет мог не иметь значения) ,
- 1. Подключить клиентское приложение java и приложение IOS с сервером WCF
- 2. Клиентское многопоточное приложение REST
- 3. Веб-сервис Клиентское приложение
- 4. Клиентское приложение Asp.NET MVC
- 5. Server-side vs Клиентское веб-приложение Производительность
- 6. Сервер C# - клиентское приложение на разных компьютерах
- 7. Клиентское приложение iOS MDM, отправляющее токен на сервер приложений
- 8. Как запустить локальное серверное/клиентское приложение?
- 9. brunch/jade одностраничное клиентское приложение
- 10. Клиентское приложение Xmpp в asp.net
- 11. Как создать клиентское приложение BlockChain?
- 12. Как распространять клиентское приложение oauth2?
- 13. Клиентское приложение веб-службы Axis2
- 14. Azure AD - отключить клиентское приложение
- 15. как реализовать тонкое клиентское приложение с PyQt
- 16. клиентское приложение с REST https вызовом
- 17. Клиентское приложение с WCF для использования ASMX
- 18. Передача токена csrf в клиентское приложение
- 19. Сервер - Клиентское соединение между приложением android и сервером
- 20. клиентское приложение асинхронного udp-сервера
- 21. Клиентское приложение, получающее дубликаты отчетов
- 22. iPhone - клиентское приложение веб-сервиса
- 23. Как создать клиентское приложение ActiveMQ?
- 24. Как удалить/перезапустить клиентское соединение с сервером flaky socket
- 25. Как зарегистрировать клиентское соединение с сервером для gRPC?
- 26. Клиентское приложение WCF зависает - нужно проконсультироваться
- 27. Определить клиентское приложение чата в Facebook Чат
- 28. синхронизирует время клиента с сервером, т. Е. Делает клиентское приложение независимым от времени локального компьютера
- 29. Клиентское/серверное приложение JAX-RS с использованием JSON и Wink
- 30. клиентское приложение сервера с использованием java и derby сервера
Вы также можете быть заинтересованы в https://bitbucket.org/snej/mynetwork/wiki/Home – sbooth