2013-12-13 3 views
0

Stream Programming Guide에 따라 CFStreamCreatePairWithSocketToHost을 사용하여 TCP 클라이언트 연결을 열어 NSInputStreamNSOutputStream 쌍 (CFReadStream, CFWriteStream에 브리지 됨)을 만들 수 있음을 알고 있습니다.서버 소켓을 수락하여 NSInputStream/NSOutputStream 쌍을 만드는 방법은 무엇입니까?

어떻게 하나의 포트에서 수신 대기하고 NSInputStreamNSOutputStream 쌍으로 연결을 허용하는 TCP 서버을 만들 수 있습니까?

답변

1

RemoteCurrency 샘플 프로젝트는이 예제를 QServer.m (이전의 TCPServer.m)에 제공합니다. 샘플 코드는 실제로 Bonjour 광고를 설정하기위한 것이지만 간단한 TCP 서버에서는 해당 부분을 제외 할 수 있습니다.

당신은 CFSocketCreate, 바인드를 호출하여 자신의 동의를 콜백으로 소켓을 만들 CFSocketSetAddress를 호출하여 포트에을 듣고, CFRunLoopAddSource 다음 CFSocketCreateRunLoopSource를 호출하여 콜백을 허용 받기 시작.

다음, 동의 콜백에, 당신은 연결에서 NSInputStream/NSOutputStreamCFStreamCreatePairWithSocket를 사용하여 처리 작성, 입력 스트림의 대리자를 설정하고 scheduleInRunLoop:forMode:를 호출하여 RECV에게 콜백을 받기 시작하고 open 모두 스트림을 사용하기 시작.

NSInputStreamNSOutputStream 추상화를 사용 (새 스레드를 생성하고 표준 UNIX 기능 socket, bind, listen, accept, send를 호출 반대로, recv)은 하나 쉽게의 나머지 부분과 같은 NSRunLoop에서 네트워크 이벤트를받을 수 있습니다 OSX에서 실행 루프 기반 API.

0

소켓을 통해 연결된 NSStream 쌍을 만드는 샘플 앱을 다운로드 할 수 있습니다. 그런 다음 iOS 장치의 카메라를 사용하여 완벽한 완벽한 실시간 비디오를 소켓을 통해 스트리밍합니다.

코드는 간결하고 따라하기 쉽습니다 (프로젝트의 추가 파일은 무시하고 NavController.h/

https://app.box.com/s/fnim5ril4mzu518wj98zy3ah8l83jayv

: m 및 PeerConnectionViewController.h/m 및 CameraViewController.h/m 관련성의 세 개의 파일)입니다