HTML/CSS/JS
에 사용자 정의 테마가 포함 된 HTTP File Server
인 응용 프로그램을 작성하고 있습니다. 대부분의 다운로드 관리자가 서버에 연결하기 때문에 여러 부분으로 파일을 제공하고 싶습니다. 여러 연결을 사용하여 파일을 8
조각으로 다운로드하면 다운로드 속도가 향상되고 다운로드가 다시 시작되고 일시 중지 될 수 있습니다.C# HttpListener 부분 콘텐츠
HTTP's Partial Content
이 가능하다는 것을 알고있는 한 웹을 둘러 보았지만 HttpListener
을 웹 페이지 및 파일을 제공하는 코드에서 구현하는 방법에 대한 좋은 예는 찾을 수 없었습니다.
누군가가 TcpListener
을 사용하겠다고 제안했지만 내 전체 앱이 HttpListener
에서 작동하므로 전환을 위해 TcpListener
을 사용하여 부분 콘텐츠 검색의 좋은 예를 찾지 못했습니다.
웹 서버는 멀티 스레드이며 서로 다른 연결을 통해 많은 요청을 동시에 처리하는 데 문제가 없습니다. 하지만 IDM
로 큰 파일을 다운로드 할 때마다 그냥 단일 연결하지만 컨텐츠를 제공하고 IDM 서버가 여기에
"206"
(HTTP Partial Content
)
context.Response.ContentType = GetMeme(filename);
Stream input = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
context.Response.ContentLength64 = input.Length;
byte[] buffer = new byte[1024 * 16];
int nbytes;
while ((nbytes = input.Read(buffer, 0, buffer.Length)) > 0)
context.Response.OutputStream.Write(buffer, 0, nbytes);
input.Close();
context.Response.StatusCode = (int)HttpStatusCode.OK;
context.Response.OutputStream.Flush();
context.Response.OutputStream.Close();
본인은 HTTP 헤드 오프셋 버퍼를 얻기 위해 시도했지만 오프셋 인해로 스트림을 닫 실패하고
Cannot close stream until all bytes are written.
이 더 좋은 대안이 있습니까라고? HttpListener도 HTTP : 206을 올바르게 처리 할 수 있습니까? 부분 콘텐츠가 TcpListener에서 어떻게 작동합니까?
유용한 링크와 정보를 제공해 주시면 감사하겠습니다.
정보를 보내 주셔서 감사합니다. 최대한 빨리 전체 피드백을 게시하고 예를 들어 MIME이라고 알고 있습니다. 때로는 메소드와 vars에 재미있는 이름을 사용합니다. :)) –