私は少し急流のクライアントを実装しようとしています。
最初のステップはトレントファイルをデコードすることです。これは私が行った結果です。
d8:announce36:http://tracker.mininova.org/announce7:comment41:自動生成 Mininova.orgによる急流CD13:creation datei1212041255e4:infod5:filesld6:lengthi291e4:pathl27:配布元 Mininova.txteed6:lengthi199784e4:pathl19:the cs song.mp3.mp3eee4:name33:The Counter Strike Songバージョン212:piece lengthi1048576e6:pieces20:趬oîdÏ9`•×=ü¼e6:locale2:en5:title33:The カウンターストライクソングバージョン2e。
2番目のステップは、「?」を使用してトラッカーのアナウンスURLにHTTPGETリクエストを送信することです。そして、以下のパラメータ(上記のようにエンコードされた)が追加されました。これは私が打たれた部分です。私はCでHTTPGETを送信する方法を研究してきました。最初にTCPソケットを設定し、最初にトラッカーサーバーに接続する必要があるようです。私はこれをやっています:
if ((sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0)
{
printf("fail create socket");
return 0;
}
char *path = “tracker.mininova.org/announce7”;
struct hostent *hp = gethostbyname(path);
memset(&servAddr, 0, sizeof(servAddr));
servAddr.sin_family = AF_INET;
&servAddr.sin_addr.s_addr = ((struct sockaddr_in*)(res->ai_addr))->sin_addr.s_addr;
servAddr.sin_port = htons(portNum);
ただし、gethostbyname
戻り続けnull
ます。私は何が間違っているのですか?