2010-04-28 3 views
12

URL을 가져 오는 가장 좋은 방법은 무엇입니까? http://foobar.com/foo.torrent과 같은 것이고, 실제로는 급류가 아닌 html 페이지가 아닌지 확인하십시오. 제안 사항? 고맙습니다.URL이 C# .NET의 토런트인지 확인하십시오.

+6

왜 모두 다운 투표입니까? 나는 그것이 관련 질문이라고 생각했다. –

+1

나는 어떤 사람들은 '급류'라는 단어를보고 즉시 "불법 복제는 나쁘다"고 downvote라고 생각합니다. – bobince

답변

1

토런트 파일 사양을 읽은 다음 URL 내용을 다운로드하고 사양의 규칙을 충족하는지 확인하기 위해 C# 응용 프로그램을 작성하십시오.

3

아마도 다운로드하고 유효성을 검사하거나 콘텐츠 유형을 확인하는 것이 가장 좋은 방법은 application/x-bittorrent입니다.

+3

많은 웹 서버가 올바른 컨텐츠 유형의 파일을 제공하지 않는다는 점에 유의하십시오. 그래서 웹 서버가 content type의 "application/octet-stream"을 반환한다면 파일이 토렌트 파일이라는 것은 여전히 ​​불가능하지 않습니다. – dtb

4

실제로 토런트 파일인지 확인하는 유일한 방법은 다운로드하여 torrent file인지 확인하는 것입니다.

0

일부 C++를 배우려는 경우 P/Invoke를 사용하여 libtorrent 라이브러리에 외부 호출을 할 수 있습니다. 파일을 검증하는 방법이 있습니다.

11

이 그것을 다운로드하지 않고 자원의 종류를 확인 HEAD 요청을 사용하려면

WebRequest request= WebRequest.Create("http://foobar.com/foo.torrent"); 
request.Method= "HEAD"; 
WebResponse response= request.GetResponse(); 
if (response.Headers.Get("Content-Type")=="application/x-bittorrent") { 
    ... 

그러나, 유형 application/x-bittorrent이 일부 서버에서 설정, 그래서 대신 application/octet-stream을 얻을 수있는 가능성이되지 않을 수 있습니다, 또는 불운 한 경우 text/plain입니다. 이것을 고려해야 할 필요가 있다면 일반적인 GET 요청으로 파일을 가져 와서 디코딩 할 수 있는지 확인하십시오.

BitTorrent 파일 형식은 'bencode'라는 형식을 기반으로합니다. Here's .NET 라이브러리는이를 처리한다고 주장합니다. 유효한 bencode가 토렌트 파일 인 모든 파일을 추측 할 수 있지만 디코드 할 매핑을 확인하려면 infoannounce 속성을 확인하십시오.

+2

좋은 발견과 좋은 설명! +1 – tobsen

1

MonoTorrent 라이브러리를 사용합니다. 특히, 당신은 url 매개 변수의 점 여부 유효한 토런트 파일을 나타내는 부울 값을 반환합니다 정적 메소드

Torrent.TryLoad(Uri url, string location, out Torrent torrent) 

를 사용할 수 있습니다.