2009-05-04 4 views
3

저는 System.IO.Stream 인스턴스를 제공하는 제작자가 있습니다. 또한이 스트림을 소비하는 여러 클라이언트가 있습니다.스트림 복제하기

각 클라이언트에 스트림의 "개인보기"를 제공 할 수 있습니까? 예를 들어, clientA가 스트림에서 읽으면 clientB가 보는 위치에 영향을 미치지 않습니다. 즉, clientB가 스트림에서 읽기를 시작하면 클라이언트 A가 위치를 벗어난 곳이 아닌 스트림의 시작 부분을 가져옵니다. 차이점이 있으면 클라이언트는 스트림에서 읽기만합니다.

희망적입니다. 사전에

감사합니다, 마이크

+0

답변 해 주셔서 감사합니다. 이미 .NET 프레임 워크에 기본 제공되는 것이 있으면 좋겠지 만 직접 구현해야 할 것입니다. 다시 한번 감사드립니다. –

답변

1

당신은 생성자에서 기본이되는 스트림을 소요하고 개인보기의 인스턴스의 위치를 ​​추적 Stream에서 클래스를 상속 할 수있다. 기본 스트림을 찾을 수있는 경우에만 작동합니다.

0

스트림을 읽고 데이터를 캐싱하고 새 스트림을 각 클라이언트의 캐시에 열면이 작업을 수행 할 수 있습니다.

2

원본 스트림에서 여러 스트림으로의 버퍼링을 처리하는 사용자 지정 "TssStream"을 만들어야한다고 생각합니다.

스트림에서 재정의해야하는 메소드의 수는 읽기 전용으로 제한되지만 각 클라이언트 (도우미를 통한 가능성이 있음)가 약간의 생각을 필요로하는 곳에서는 조정됩니다.

관련 문제