纯属研究,好玩写了这么一个程序,我把监听到的东西都写到了TEMP.TXT但是打开里面字符都是乱码,全是像底下那样的字符,什么状况?还有,哪位监听过,出来的数据应该是什么样子??烫烫烫烫烫烫烫

解决方案 »

  1.   

    贴上监听部分代码,我应该怎么转换才能看到数据呢(不是乱码就行,应该可以看到16进制的数吧)
            int ret;
            char buff[1024];
    ret=::recv(SnifferSocket,buff,sizeof(buff),0);
    buff[ret]='\0';现在我输出BUFF,啥都看不出来...
      

  2.   

    接收是否成功,另外buff最好清0
      

  3.   

    接收是成功的,每次的BUFF都在变先不管接收是否成功....我至少想看到能看的懂的东西,别都是乱码...就这问题怎么解决应该如何处理BUFF的内容
      

  4.   

    烫烫烫烫
    CC CC CC CC
    内存未被初始化就显示了char buff[1024]; 
    最好zeromemory一下接收到之后 先print出来看看 然后再写到文件 
    再有问题可抓包分析
      

  5.   

    烫=0xcccc系统初始化buffer的时候,一般是用0xcc初始化的,看样子是你没有监听到任何数据
      

  6.   

    恩,我用断点截的,之后就不是空了之后的数据也是乱码[email protected]...:.?}[email protected]..!...."h...b.+.J......d....7...87.7b7.....s)..|...%....k.~.....y..^.=+.类似这样,我不知道怎么分析他...如何转换成16进制的?
      

  7.   

    格式化输出
    sprintf或者CString::Format比如
    CString str;
    str.Format("%02x", 'E');
      

  8.   

    问题是那些字符串,都是 BUFF里的啊...比如E就是 buff[0]; buff[1]就是小数点如果写 CString str; str.Format("%02x",buff[0]);这样写会报错
      

  9.   

    怎么把BUFF[1024]转换到CSTRING去呢...一般的方法好象行不通,查了很久,不管用哪种方法,CString 里面只有一个字符"E"好象后面有很多个结束符号似的...
      

  10.   

    CString str, temp; 
    str.Empty();for (int i = 0; i < 1024; i++)
    {
    temp.Format("%02x", buff[i]);
    str += temp;
    }
      

  11.   

    楼上正解...非常感谢各位帮忙整理一下我的思路,方便以后的人查阅用RECV 接收到的数据都存到了 char buff[1024]; 里面,但是里面的数据是10进制的(根据我观察,可能理解有错误)因此我的程序在监听UDP报文的时候,需要先将BUFF里的每个字符做一个转换每个字符都要先转成 %02x 2位的16进制数,就是我们看的懂的语言...目前我已经把报文,翻译成能看的懂的数据了,可能概念上理解有误,如果说的有不对的地方,楼下指正!
      

  12.   

    补充一下,因为UDP报文中间有间隔,所以好象有很多结束符直接输出是不行的,输出的内容是对应的ASCII码...比如 buff[0] 的内容是 69'E',如果直接输出是E,10进制是65正确的应该翻译成16进制,也就是 buff[0] 其实是 45 buff[1]是00 buff[2] 是00附上一段数据,这样比较好看.45 00 00 a0 57 35 00 00 01 11 4e 6c 0a 4b 19 67 ef ff ff fa f6 40 07 6c 00 8c 41 17 4d 2d 53 45 41 52 43 48 20 2a 20 48 54 54 50 2f 31 2e 31 0d 0a 4d 58 3a 20 33 0d 0a 48 4f 53 54 3a 20 32 33 39 2e 32 35 35 2e 32 35 35 2e 32 35 30 3a 31 39 30 30 0d 0a 4d 41 4e 3a 20 22 73 73 64 70 3a 64 69 73 63 6f 76 65 72 22