字体:  

还是Proactor服务器出现的问题...

minglong717 发表于: 2008-6-30 11:38 来源: ACE 开发者

180个客户端同时连接服务器, 循环发送一条信息...服务器接收到消息后...循环发送给所有的客户端...

就是说: 服务器做到 180*180个写操作时没有问题...

但是 当240个同时连接时,服务器就挂了...

Proactor下...

bool        CUser::Send( void* pBuf, int nLen )
{
        if ( !m_bValid.value() )//连接已经失效,不可以再发送
        {
                return false;
        }

        ACE_Message_Block* mb = new ACE_Message_Block( nLen );//这里挂掉了...
        if ( 0 == mb )
        {
                delete this;
                return false;
        }

        ACE_OS::memcpy( mb->wr_ptr(), pBuf, nLen );
        mb->wr_ptr( nLen );

        if ( -1 == put(mb) )
        {
                delete this;
                return false;
        }

        return true;
}

这是跟机器性能有关系...还是我的代码还不够健壮?

应该有什么解决的办法的吧?

最新回复

winston at 2008-6-30 12:57:51
都有可能。
先查查自己的代码吧。
minglong717 at 2008-6-30 13:02:29
但是在180个连接的时候没有问题...说明逻辑上没有问题吧???
winston at 2008-6-30 16:27:58
不一定,也许是资源的问题。
dm119 at 2008-7-08 13:54:33
内存不足?
winston at 2008-7-08 14:07:22
跟踪一下代码,或者用工具查一下