문제

나는 건물 Objective-C 응용 프로그램은 서버와 클라이언트입니다.클라이언트에 보낼 수 있습니다 업데이트 서버,서버에서 요구하는을 보낼 수 있도록 업데이트하여 연결된 각 클라이언트입니다.었는 방법에 대해 생각하고 구현하기 위해 최선을 다하이 시스템,하지만 질문에 대한 당신의 제안을 제공합니다.

현재,저는 생각을 하는 경우 새로운 업데이트를 사용할 수 있는 서버가 사용할 쓰레드를 보면 업데이트 각 클라이언트에 차례입니다.면 클라이언트 시간,그들은 연결이 끊어졌습니다.나는 아주 작은 경험을 네트워킹,그래서 요청하고 당신의 통찰력이다.

당신이 생각하는 시스템이 작동할 것입니까?그렇다면,당신은 어떤 제안을 하는 방법에 관하여 실을 꿰는?어떤 NS 클래스할 수 있는 시점에서 나?가 있어요 몇 가지 종류의 큐로 사용할 수 있는,나는 생각입니다.

다른 생각?

편집:난 기대하지 않는 클라이언트 수를 얻을 위 50 도에서 max.

도움이 되었습니까?

해결책

한 클라이언트와 서버 OS X 응용 프로그램 및 수 있는 모두 작성하는 것을 목적을 사용하여 코코아 프레임워크를 당신은 살펴보 분산체 (마)기술 코코아.내가 하려고 하지 않습을 제공하는 튜토리얼에서 Distributed Objects,여기에는 이유를 설명이 유용할 수 있습니다...

하 처리 비동시성 네트워크에 대한 세부 정보를(모든 클라이언트 업데이트가 일어날 수 있는 단일 스레드에서).또한 의미의 통신을 원격체(서버 클라이언트는 비자 versa;하이 양방향으 연결이 설정되면)매우 유사하다에서-프로세스 커뮤니케이션.즉,당신은 참조하여 원격체(말 NSDistantObject 는 프록시로 사용하는 개체의 다른 쪽 끝에 연결)클라이언트 코드는 메시지를 보낼 수 있습니다 원격체로서 경우 지역:

[remoteServer update:client];

클라이언트에서 또는

[[remoteClientList objectAtIndex:i] update:server];

에서 서버입니다.I'll 세부 사항을 떠나의 연결을 설정과를 얻기 위한 원격 서버 또는 remoteClient 참조하 당신을 읽은 후에 분산체 프로그래밍 가이드.

의 단점을 사용하여지는 당신은 코코아;그것은 것입 를 작성하는 것은 어려운 일 non-코코아 또는 클라이언트는 서버와 통신을 사용하여 Distirbuted 개체입니다.이 있는 경우는 기회를 원할 수도 있습 non-코코아 또는 클라이언트가 서버 구현을 사용하지 않아야 합니다.이 경우,권하고 싶 무언가가 간단의 많은 크로스-플랫폼과 언어를 지원합니다.나머지 스타일의 API 를 통해 HTTP 좋은 옵션입니다.보 코코아 URL 을 로딩 시스템 문서화하는 방법에 대한 자세한 내용을 구현하는 HTTP 요청과 응답합니다.보 애플의 CocoaHTTPServer 예제 코드나 code.google.com 프로젝트의 같은 이름 에 대한 정보를 구현하는 HTTP 서버에 코코아 코드입니다.

으로 마지막 선택할 수 있습을 살펴 코코아 스트림 프로그래밍 가이드 을 구현하려는 경우 자신의 네트워크 프로토콜입니다. NSStream의 서브 클래스는 것입니다 당신이 듣고 네트워크에서 소켓이고 비동기 처리 읽기/쓰기에서는 소켓에.많은 사람들이 사용 AsyncSocket 이 목적을 위해.그것을 감싸는(낮은 레벨)CFStream 및 CFSocket 고 작성 네트워크 코드는 다소 쉽습니다.

다른 팁

서버가 클라이언트에 업데이트를 보내면 하나의 스레드가 모두 처리하고 비동기 소켓을 사용하는 것이 더 쉬울 것입니다. 물론 이것은 당신이 얼마나 많은 고객을 처리해야했는지에 달려 있습니다.

Apple 개발자 측에는 몇 가지 네트워킹 예제가 있습니다. 내가 확인하는 것이 좋습니다. UrlCache는 다운로드 할 수 있습니다. 이 예제에 대한 Apple의 문서에서 인용 :

URLCACHE는 웹에서 리소스를 다운로드하고 응용 프로그램의 데이터 디렉토리에 저장하고 리소스의 로컬 사본을 사용하는 방법을 보여주는 샘플 iPhone 응용 프로그램입니다. URLCache는 또한 몇 가지 캐싱 정책을 구현하는 방법을 보여줍니다.

흥미로운 옵션은 블립 프로토콜 Jens Alfke. 그것은 벗겨진 버전과 같습니다 삑 하는 소리: 메시지 지향 네트워킹 시스템. 기본적으로 양방향 메시지 파이프에 대한 저수준 추상화를 제공하므로 통신 프로토콜을 그 위에 레이어링하는 데 집중할 수 있습니다.

그것은 다음과 같은 가치있는 추종자들을 가지고 있습니다 마커스 자라 (Coredata Bible의 저자)와 Gus Mueller의 Flying Meat Software.

시스템을 설계 할 방법을 모르겠지만 일반적으로 서버는 클라이언트에 연결할 수 없습니다. 클라이언트는 커뮤니케이션을 시작해야합니다. 50 명의 클라이언트가 낮 으면 웹 서버/클라이언트와 같은 구현을 보지 못할 수 있습니다 ...

즉, 기본적으로 클라이언트 서버 통신을 처리하는 두 가지 방법이 있습니다. 1. 클라이언트는 서버를 정기적으로 설문 조사하여 업데이트를 얻습니다. 2. 클라이언트는 서버에 연결을 열고 서버가 잘 알려진 상태로 응답합니다 (양쪽에서는 서버가 잘 알려져 있습니다. 이해) 프로토콜.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top