minglong717 发表于 2008-6-30 11:38:00

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

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 发表于 2008-6-30 12:57:51

都有可能。
先查查自己的代码吧。

minglong717 发表于 2008-6-30 13:02:29

但是在180个连接的时候没有问题...说明逻辑上没有问题吧???

winston 发表于 2008-6-30 16:27:58

不一定,也许是资源的问题。

dm119 发表于 2008-7-8 13:54:33

内存不足?

winston 发表于 2008-7-8 14:07:22

跟踪一下代码,或者用工具查一下
页: [1]
查看完整版本: 还是Proactor服务器出现的问题...