二进制紧凑模式: 一个长度为6*n的btye流,n是peer的个数,用6个byte表示一个peer,前面四个byte表示ip(int),后面两个是port(short),它们都是网络字节序,即高字节在前面,低字节在后面。 现在要要将 192.169.1.2:6889   和  192.169.1.3:2001  
转为二进制紧凑模式,c#代码怎么实现?? 请教高手并给出详细代码,谢谢! 如果有高手能给出tracker紧凑模式响应的代码,不胜感激! 参考文章 
http://dev.csdn.net/article/60/60305.shtm

解决方案 »

  1.   

    不是有例子说明吗?紧凑模式的回复其peers字段是一个如下结构的数组:
             struct PEER
            {
                 DWORD  IP;//节点IP
                 WORD  Port;//节点端口
            };         
    例如:192.168.24.52:2001 => 0xC0 0xA8 0x18 0x34 0xD1 0x07要二进制的话你只要把0xC0换成二进制就可以了
    这里不用转成十六进制,用下面这句可转成二进制的字符串形式
    Convert.ToString(168, 2));然后要注意的是最后小节0xD1 0x07是倒过来数的
    即7*16^2 + 13*16 + 1 == 2001
      

  2.   

    请教zdjray:如果Ip是192.168.1.2:6889,我这样输出可以吗?
    Response.Write(Convert.ToString(168, 2) + Convert.ToString(192, 2) + Convert.ToString(1, 2) + Convert.ToString(2, 2) + Convert.ToString(6889, 2)); 
      

  3.   

    请问我使用  Response.BinaryWrite 输出还是  Response.Write  输出?