找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 6038|回复: 8

初级问题

[复制链接]
发表于 2012-4-10 18:11:01 | 显示全部楼层 |阅读模式
  
本人只是ACE的菜鸟,刚接触没几天,今天遇到一个问题

  size_t count = 0;
    for (ACE_Message_Block *p = mb; p != NULL; p=p->cont())
    {
        count += log_file.send_n(p->rd_ptr(), p->length());
        for (int i = 0; i < p->length(); ++i)
        {
            std::cout << (*(p->rd_ptr()+i));
        }
    }

    ACE_DEBUG((LM_ERROR, "%p\n", "write log"));
    return count;
    //return log_file.send_n(mb);

代码如上,输出如下:


写入文件中正常,又不正常,,,,每次第一次连接后写 入的字符是乱码,第二次后,又正常了,第一次的数据也正常了....不知道为什么.....求大神解释.....
file:///C:/Documents%20and%20Settings/Administrator/Application%20Data/Tencent/Users/361403737/QQ/WinTemp/RichOle/29VTU7@P%7%29A%7BCC7Q%28YFR%7B8.jpg

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?用户注册

×
 楼主| 发表于 2012-4-10 18:19:40 | 显示全部楼层
对了...建立文件时代码是这样的
ACE_FILE_Connector filecon;
filecon.connect(log_file, ACE_FILE_Addr(filename.c_str()), 0, ACE_Addr::sap_any, 0, O_RDWR | O_APPEND | O_CREAT);
发表于 2012-4-10 20:52:16 | 显示全部楼层
ACE_Message_Block *p = mb; p != NULL; p=p->cont()
----
这行,里面的消息块内容是什么?怎么链接到一起的?
 楼主| 发表于 2012-4-10 21:20:16 | 显示全部楼层
winston 发表于 2012-4-10 20:52
ACE_Message_Block *p = mb; p != NULL; p=p->cont()
----
这行,里面的消息块内容是什么?怎么链接到一起 ...

链到一起的消息,最开始放的,ip地址后面就是发送的内容,如果消息过长就会分开!
 楼主| 发表于 2012-4-10 22:00:33 | 显示全部楼层
貌似接收到内容没有问题,写入文件就出问题!
写文件时的症状是这样的,服务端第一次运行时,写入的文件是乱码如图


如果结束这次的运行,再次运行后,如果写入文件后,文件又好了,,,内空正确,连带第一次写入的数据也正常了!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?用户注册

×
发表于 2012-4-10 22:54:07 | 显示全部楼层
baisaichen 发表于 2012-4-10 22:00
貌似接收到内容没有问题,写入文件就出问题!
写文件时的症状是这样的,服务端第一次运行时,写入的文件是乱码 ...

写的乱码,那说明你内存的东西是乱的。问题应该不在写入上面,在你内存操作上面有问题。仔细排查内存的写入部分。
 楼主| 发表于 2012-4-10 22:55:37 | 显示全部楼层
我已经在上面输出了内存中的数据...上面图里可以看得到...和客户端发送的是一样的!
 楼主| 发表于 2012-4-12 16:01:03 | 显示全部楼层
问题已经解决,由于我写入串时把\0一起写入到文件里了...我把\0去掉就好了.....
但是还是不知道为什么写入\0会出现这种情况

谢谢winston的帮助
发表于 2012-4-12 17:55:59 | 显示全部楼层
baisaichen 发表于 2012-4-12 16:01
问题已经解决,由于我写入串时把\0一起写入到文件里了...我把\0去掉就好了.....
但是还是不知道为什么写入\0 ...

果然是内存操作问题。\0只是c字符串的惯用定义,并不是所有的类库都用这个定义和规则,也许它们自己定义了一套模式。
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-5-2 09:05 , Processed in 0.016976 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表