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 }
创建握手信息的函数
create_handshake_msg()
info_hash就是种子文件中 4:info 后的种子信息计算的哈希值
View Code
参考
《linux c编程实战》第十三章节btcorrent 及代码
http://www.cnblogs.com/UnGeek/p/6052776.html