클라이언트/서버 게임 아키텍처를 구축하려고하고 있으며 로컬 Mac을 서버로 사용하여 게임을 테스트하고 싶습니다. Bonjour에서 여러 기사를 찾았지만 로컬 네트워크 트래픽에만 해당됩니다. 내 목표는 인터넷을 통해이 응용 프로그램을 작동시키고, 정적 주소로 호스트 된 응용 프로그램에 연결하여 데이터 회전을 용이하게하는 것입니다. 그러나, 나는이 목적을 위해 어떤 코코아 API를 사용해야 할지를 놓치고있다. 내가 NSConnection
, NSStream subclasses
또는 좋은 'ol C sockets
과 그 외의 것을 사용해야합니까? 게임 상태는 Objective-C로 이미 구축되어 있으며 서버 기능을 준비하고 나면 동작 준비가됩니다. 어떤 통찰력?Mac 서버가있는 iOS 클라이언트 응용 프로그램
답변
소켓을 사용하는 것이 좋습니다. 사용하기 어렵지 않고 표준 방법이기 때문입니다. 심지어 BSD 소켓을 중심으로 비동기 래퍼 클래스를 작성했습니다 : https://github.com/H2CO3/TCPHelper
이것은 단순한 일대일 TCP 프로토콜 연결이며 IPv4와 IPv6을 모두 지원합니다. 원시 NSData를 보내고받을 수 있으며 그 주위에 프로토콜을 만들 수 있습니다.
NSURLConnection과 같은 Foundation 클래스는 이러한 목적으로 특별히 사용되지 않습니다. 표준 HTTP 서버와 상호 작용하기보다는 오히려 게임용 전체 HTTP 서버를 구현하고 싶지는 않습니다.
NSNetServices는 CFNetwork와 마찬가지로 사용자에게 적합하지만 후자는 사용하기가 조금 더 어렵습니다. Foundation 클래스를 사용하려면 NSNetServices를 권하고 싶습니다.
희망이 있습니다.
NSConnection, NSStrean 및 C 소켓은 서로 다른 필요에 따라 빌드됩니다. 더 많은 도움을 얻으려면 게임의 요구 사항과 서비스 종류를 지정해야합니다. 로컬 네트워크가 아닌 인터넷에 의존하는 클라이언트 - 서버 응용 프로그램을 개발하려는 경우 Bonjour는 도움을 줄 수 없습니다.
C 소켓이 있으며, 이들을 감싸는 Cocoa API는 클라이언트와 서버 사이의 열린 네트워크 스트림에서 작동합니다. 공개 스트림을 사용하면 클라이언트가 요청하지 않아도 서버가 클라이언트에 데이터를 보낼 수 있다는 이점이 있습니다. Cocoa의 NSURLConnection은 다르게 작동합니다. 이를 통해 HTTP 요청을 수행하고 서버에서 형식화 된 응답을 수신 할 수 있습니다.
응용 프로그램이 HTTP 요청을 기반으로하는 경우 NSURLConnection 또는 AFNetworking을 타사 대안으로 사용하는 것이 좋습니다. 응용 프로그램이 공개 스트림에 의존하는 경우, Apple의 CFNetwork (뛰어난 성능, 안정성 및 다양성을 갖춘 Mac이 Carbon을 사용했던 날로부터 유래 된 BSD 소켓에 대한 C 래퍼) 및 GCDAsyncSocket, BSD 소켓, Crand Central Dispatch 지원, Objective-C 준비 완료. 훌륭하게 작동합니다.
도와줬으면합니다.
다양한 방법으로이를 수행 할 수 있습니다. 데이터를 전달하는 방법과 데이터가 사용될 용도에 따라 달라집니다.
먼저 게임과 함께 개발 목적으로 사용할 수있는 호스트 이름을 설정합니다. http://dyn.com/dns/과 같은 것을 사용하여 Mac 용으로 설정할 수 있습니다. 그런 다음 컴파일러 설정을 사용하여 개발/프로덕션 URL을 전환 할 수 있습니다.
다음은 게임용으로 TCP 소켓을 사용하는 것이 좋습니다 (CocoaAsyncSocket - https://github.com/robbiehanson/CocoaAsyncSocket 사용). 이 방법을 사용하면 유스 케이스가 잘 작동합니다.턴 기반 데이터를 다루고 있기 때문에 (그리고 모든 데이터가 중요하기 때문에) UDP 소켓을 사용하는 것을 권장하지 않습니다 (그러나 드롭 된 패킷이 중요하지 않은 위치, 비디오 또는 오디오 데이터 만 전달하는 경우에는 작동합니다) .
- 1. Java 서버가있는 XCode 클라이언트
- 2. Mac 서버가없는 iPhone 클라이언트/서버 응용 프로그램
- 3. Mac 용 MKMapView (비 iOS 응용 프로그램)
- 4. 여러 서버가있는 클라이언트 - 서버 아키텍처
- 5. ios에 포트 mac 응용 프로그램
- 6. Mac 응용 프로그램 문제
- 7. iOS와 Mac 응용 프로그램 간의 블루투스 통신
- 8. 클라이언트/서버 응용 프로그램
- 9. 클라이언트 응용 프로그램 업데이트
- 10. 서버 클라이언트 응용 프로그램
- 11. 응용 프로그램 클라이언트
- 12. 클라이언트 응용 프로그램 업데이트
- 13. Mac 응용 프로그램 스토어 키트 추가 방법
- 14. Mac 응용 프로그램 용 로고 설정
- 15. 문제 Mac 응용 프로그램 번들
- 16. 창없이 Mac 응용 프로그램 만들기
- 17. Mac 용 Winform 응용 프로그램
- 18. Dock에서 Mac 응용 프로그램 숨기기
- 19. Mac 시스템 응용 프로그램 확장
- 20. 웹 개발 응용 프로그램 - mac
- 21. Xcode가없는 Mac GUI 응용 프로그램
- 22. iOS 응용 프로그램 스키닝
- 23. iOS 응용 프로그램 패키지
- 24. 종료 응용 프로그램 iOS
- 25. iOS 응용 프로그램 ExternalHosts
- 26. 타사 RTD 서버가있는 RTD 클라이언트 : C#
- 27. aws 스택의 여러 응용 프로그램 서버가있는 nginx 웹 서버 구성
- 28. 레코드 비디오 플렉스 미디어 서버가있는 AIR 응용 프로그램
- 29. iPhone 서버 - 클라이언트 응용 프로그램
- 30. 클라이언트 - 서버 응용 프로그램 디자인
당신은 또한에 관심이있을 수 있습니다 https://bitbucket.org/snej/mynetwork/wiki/Home – sbooth