正在写一个监听UDP的程序,为什么捕捉到的数据都是乱码呢 纯属研究,好玩写了这么一个程序,我把监听到的东西都写到了TEMP.TXT但是打开里面字符都是乱码,全是像底下那样的字符,什么状况?还有,哪位监听过,出来的数据应该是什么样子??烫烫烫烫烫烫烫 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 贴上监听部分代码,我应该怎么转换才能看到数据呢(不是乱码就行,应该可以看到16进制的数吧) int ret; char buff[1024]; ret=::recv(SnifferSocket,buff,sizeof(buff),0); buff[ret]='\0';现在我输出BUFF,啥都看不出来... 接收是否成功,另外buff最好清0 接收是成功的,每次的BUFF都在变先不管接收是否成功....我至少想看到能看的懂的东西,别都是乱码...就这问题怎么解决应该如何处理BUFF的内容 烫烫烫烫CC CC CC CC内存未被初始化就显示了char buff[1024]; 最好zeromemory一下接收到之后 先print出来看看 然后再写到文件 再有问题可抓包分析 烫=0xcccc系统初始化buffer的时候,一般是用0xcc初始化的,看样子是你没有监听到任何数据 恩,我用断点截的,之后就不是空了之后的数据也是乱码[email protected]...:.?}[email protected]..!...."h...b.+.J......d....7...87.7b7.....s)..|...%....k.~.....y..^.=+.类似这样,我不知道怎么分析他...如何转换成16进制的? 格式化输出sprintf或者CString::Format比如CString str;str.Format("%02x", 'E'); 问题是那些字符串,都是 BUFF里的啊...比如E就是 buff[0]; buff[1]就是小数点如果写 CString str; str.Format("%02x",buff[0]);这样写会报错 怎么把BUFF[1024]转换到CSTRING去呢...一般的方法好象行不通,查了很久,不管用哪种方法,CString 里面只有一个字符"E"好象后面有很多个结束符号似的... CString str, temp; str.Empty();for (int i = 0; i < 1024; i++){temp.Format("%02x", buff[i]);str += temp;} 楼上正解...非常感谢各位帮忙整理一下我的思路,方便以后的人查阅用RECV 接收到的数据都存到了 char buff[1024]; 里面,但是里面的数据是10进制的(根据我观察,可能理解有错误)因此我的程序在监听UDP报文的时候,需要先将BUFF里的每个字符做一个转换每个字符都要先转成 %02x 2位的16进制数,就是我们看的懂的语言...目前我已经把报文,翻译成能看的懂的数据了,可能概念上理解有误,如果说的有不对的地方,楼下指正! 补充一下,因为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 MFC 如何实现前进后退的功能 关于MFC的一个问题 求助!!!为什么我设置的退格,删除时有残留 代码int * a其中a定义的一个指针变量,它也是一个指针数组吗? 求一个示例的学习程序(基于多文档的)谢谢大家,祝新年快乐! 如果根据在屏幕上任点的一点,判断他是否属于已经画在屏幕的哪条直线? 大家推荐一些好的vc网站吧!---给分 50分相求 魔法兔子461的注册码 ,在线等!! 常用数据类型使用转换详解 怎样将默认焦点设置在LIST CONTROL的第一项选择项上?setfocus()不起作用! 坐标系的缩放问题 请大家帮我测试一下这个程序有没有问题~~~~
int ret;
char buff[1024];
ret=::recv(SnifferSocket,buff,sizeof(buff),0);
buff[ret]='\0';现在我输出BUFF,啥都看不出来...
CC CC CC CC
内存未被初始化就显示了char buff[1024];
最好zeromemory一下接收到之后 先print出来看看 然后再写到文件
再有问题可抓包分析
sprintf或者CString::Format比如
CString str;
str.Format("%02x", 'E');
str.Empty();for (int i = 0; i < 1024; i++)
{
temp.Format("%02x", buff[i]);
str += temp;
}