【发布时间】:2012-12-04 14:41:04
【问题描述】:
我正在尝试实现一点 torrent 客户端。
第一步是解码torrent文件,我这样做了,结果如下:
d8:announce36:http://tracker.mininova.org/announce7:comment41:自动生成 Mininova.org 的洪流 CD13:creation datei1212041255e4:infod5:filesld6:lengthi291e4:pathl27:分发者 Mininova.txteed6:lengthi199784e4:pathl19:cs song.mp3.mp3eee4:name33:反恐精英歌曲版本 212:piece lengthi1048576e6:pieces20:趬oîdÏ9`•×=ü¼e6:locale2:en5:title33:The 反恐精英歌曲版本 2e。第二步是发送一个 HTTP GET 请求到跟踪器的 用“?”宣布网址以及以下参数(如上编码) 附加。这是我印象深刻的部分。我一直在研究如何 在 C 中发送 HTTP GET;看来您需要先设置一个 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。我做错了什么?
【问题讨论】:
标签: c get bittorrent