서버와 클라이언트 사이에 일대일 연결이 있습니다. 서버가 실시간 오디오/비디오 데이터를 스트리밍합니다.고속 오디오/비디오 스트리밍을위한 소켓 및 포트 설정
내 질문에 이상하게 들릴 수 있지만 여러 포트/소켓 또는 하나만 사용해야합니까? 여러 개의 포트를 사용하는 것이 더 빠르지 않습니까? 아니면 하나가 더 나은 성능을 제공합니까? 메시지 용 포트, 비디오 용 포트 및 오디오 용 포트가 있어야합니까? 아니면 모든 포트를 단일 포트에 패키지하는 것이 더 간단합니까?
현재의 문제 중 하나는 크기 (바이트)가 한 프레임에서 다음 프레임으로 변경 될 수 있으므로 현재 프레임의 크기를 먼저 보내야한다는 것입니다. 나는 Networking에 상당히 익숙하지만, 전송되는 특정 객체에 대한 정확한 범위를 자동으로 탐지하는 메커니즘을 발견하지 못했습니다. 예를 들어 2934 바이트의 긴 패킷을 보내면 실제로 그 패킷의 크기를 수신기에 알려야합니까?
처음에는 들어오는 프레임을 최대한 빨리 포장하려고했지만 수신 측에서 적절한 바이트 수를 얻지 못하는 것으로 나타났습니다. 대부분의 경우, 내가 보낸 것보다 더 빨리 읽을 것이고 부분적인 프레임 만 얻습니다. 바이트 수를 가능한 한 빨리 얻는 가장 좋은 방법은 무엇입니까?
너무 낮 으면서 객체 전송을 처리하는 데 사용되는 상위 클래스/프레임 워크가 있습니까?
당신이해야 할 가장 큰 일은 * 패킷 *에 대해 완전히 잊어 버리는 것입니다. TCP 연결은 ** 스트림 **이므로 데이터의 모든 설명은 * 사용자 * (프로토콜)에 의해 처리되어야합니다. –
또한 UDP * 데이터 그램 *은 일반적으로 스트리밍에 사용됩니다. –
@JonathonReinhart : 스트림 일 수도 있지만 패킷 또는 프레임으로 잘라야합니다. 그렇지 않으면 클라이언트는 정크 반 프레임 또는 겹치는 프레임 만 처리합니다. 나는이 일을하는 최선의 방법이나 가장 효율적인 방법이 무엇인지 모릅니다. 분명히 파이프에있는 데이터를 누르고 최선을 다하는 것보다 훨씬 더 많은 작업을 수행해야합니다. – LightStriker