2010-12-03 3 views
1

저는 Quartz Composer를 실시간 비디오 프로세서로 사용하는 대화 형 편집 비디오 애플리케이션을 작성하고 있습니다. 내 응용 프로그램에서는 시간과 동기화가 매우 중요합니다.Unix 도메인 소켓, Udp 소켓 목표 C 무엇을 사용합니까?

C++로 코딩 된 첫 번째 응용 프로그램은이 "경로" "이 파일 비디오" "시작"에서 "재생"과 같은 명령을 보내야합니다.이 udp 소켓은 매우 미세하게 작동합니다. . 각 명령마다 하나의 소켓을 사용하므로 명령 순서가 엉망이되어서는 안됩니다. 그런 일은 치명적일 것입니다!

실제 문제는 내 Quartz Composer 패치가 내 타임 라인 바를 제어하는 ​​두 번째 애플리케이션에 현재 시간을 보내고 사용자가 동영상의 실제 진행 상황을 그래픽으로 표현할 때입니다. Udp 소켓은 충분히 빠르지 않고 다른 순서 또는 중복으로 패킷을 보냅니다.

비록 유닉스 소켓 도메인이 나를 도울 수는 있었지만 웹에서 발견 된 모든 예제를 보았을 때 어디서나 C가 아닌 objC에서 볼 수 있었고 Quartz Composer 용 플러그인은 objC에서만 코딩 할 수 있었다. C 코드를 직접 랩핑해야하지만이 초소형 태스크를 시작하기 전에 유닉스 소켓이 필요한지 확인하는 방법은 무엇입니까?

정말 유닉스 소켓이 내가하려고하는 것에 대해 충분히 빠르고 안정적입니까?

다른 방법으로 objC의 프로세스를 동기화하는 방법을 알고 있습니까? 파이프, 공유 메모리가 있지만 내 플러그인에서이를 구현하는 방법이 명확하지 않습니다.

+0

"각 명령마다 하나의 소켓을 사용합니다"라는 말은 매번 새 소켓을 열어야한다는 의미입니까? 그리고 로컬 (단일 컴퓨터) IPC에 UDP를 사용하고 있습니까? 그리고 유닉스 도메인 소켓이 충분히 빠르지 않을지 궁금한가요? –

+0

예 로컬 컴퓨터에 UDP를 사용하고 있습니다. 유닉스 도메인 소켓이 다른 응용 프로그램에서 제 GUI에 25/s 또는 30/s 업데이트를 보낼만큼 빠르면 궁금합니다. UDP가 막혔습니다. 예. 사용하고 있습니다. 비디오 응용 프로그램에 보내는 각 명령의 소켓 하나를 말하기위한 하나의 말을위한 재생 중지 비디오 등의 시작 시간 설정 – Nairo

답변

0

유닉스 도메인 소켓 가 다른 응용 프로그램 UDP 내 GUI에 예를 들어 25/s의 30/s의 업데이트를 보낼 빠른 충분한 경우 내가 UDP를 사용하고 있음에 로컬 시스템 에 대한 궁금하네요 단지

유닉스 소켓은 조금 빠를 수도 있고, 아마도 더 중요한 것은 그들은 (UDP와 달리) 신뢰성있는 전달을 제공합니다 ... 붙어 을 가져옵니다. 그러나 속도에 대한 여러분의 의견과 프로토콜로 UDP가 초당 30 개의 업데이트를 GUI에 게시하지 못하게한다는 생각은이 문제가 프로토콜의 선택이 아니라 다른 곳에서 생각할 수있게합니다. 다시 말해, 유닉스 소켓은 UDP보다 빠르다고 생각하지만 실제로 문제가 해결 될지는 의문입니다.

+0

답변 주셔서 감사합니다. 내가 마지막으로 남긴 메시지에서 막연하게 표현했습니다. 내가 말하고자했던 것은 Udp 소켓을 사용하여 다른 응용 프로그램의 프로세스와 GUI를 동기화하고이 프로토콜의 안정성 문제를 알고 Unix 도메인 소켓을 대신 사용하려고합니다. 한 가지 문제는 apple에서 CFLocalServer를 발견 한 예제가 C로 작성되었으며 응용 프로그램에서만 Objective-C를 사용하여 플러그인을 코딩하도록했는데 객관적으로 Unix 소켓을 만들 수 있습니까? -기음? – Nairo

+0

이 경우에는 지금 TCP를 사용할 것을 강력히 권합니다. 그것은 좋은 문서와 당신을 안내하는 지원과 함께, UDP에서 아주 쉽게 전환해야합니다. 미래에 유닉스 소켓이 필요할 수도 있지만, UDP에서 TCP로 마이그레이션하면 필요하다고 판단되는 경우에만 전환을 준비 할 수 있습니다.하지만 솔직히 말해서, 나는 당신의 제품을 전혀 손상시키지 않으면 서 TCP가 UDP로 보았던 신뢰성 문제를 해결할 것이라고 생각합니다. 적어도 간단 할 때까지는 간단하게 유지하는 것이 좋습니다. –