bittorrent 学习(三) MSG

msg.c中

int转化 char[4]  char[4]转化int的函数 如下(有多种方案)

 1 int int_to_char(int i, unsigned char c[4])
 2 {
 3     c[3] = i % 256;
 4     c[2] = (i - c[3]) / 256 % 256;
 5     c[1] = (i - c[3] - c[2] * 256) / 256 / 256 % 256;
 6     c[0] = (i - c[3] - c[2] * 256 - c[1] * 256 * 256) / 256 / 256 / 256 % 256;
 7 
 8     return 0;
 9 }
10 
11 int IntToChar(int j, unsigned char c[4]) {
12     int i = 0;
13     for (i = 0; i < 4; i++) {
14         c[i] = (j >> (4 - i - 1) * 8) & 0xff;
15     }
16     return 0;
17 }
18 
19 int CharToInt1(unsigned char c[4]) {
20     int i = 0;
21 
22     unsigned char* p = (unsigned char*)&i;
23     for (int j = 3; j > 0 ; j--) {
24         memcpy(p, &c[j], sizeof(c[j]));
25         p++;
26     }
27     memcpy(p, &c[0], sizeof(c[0]));
28 
29     return i;
30 }
31 
32 int CharToInt(unsigned char c[4]) {
33     int i = 0;
34     for (int j = 0; j < 3; j++) {
35         i += c[j];
36         i <<= 8;
37     }
38     i += c[3];
39 
40     return i;
41 }
42 
43 int char_to_int(unsigned char c[4])
44 {
45     int i;
46 
47     i = c[0] * 256 * 256 * 256 + c[1] * 256 * 256 + c[2] * 256 + c[3];
48 
49     return i;
50 }
View Code

创建握手信息的函数

create_handshake_msg()

info_hash就是种子文件中 4:info 后的种子信息计算的哈希值

View Code

参考

《linux c编程实战》第十三章节btcorrent  及代码

http://www.cnblogs.com/UnGeek/p/6052776.html

猜你喜欢

转载自www.cnblogs.com/itdef/p/9895834.html
今日推荐