</pre> 项目使用了select模型,所以这里只贴出此模型下的客户端连接断开判断:<p></p><p>主要是select返回后,正常recv,如果recv的返回值小于0则表示客户端连接已断开。</p><p></p>
<pre name="code" class="cpp">/*select等待*/
err = select(maxfd + 1, &scanfd, NULL, NULL, &timeout) ;
switch(err)
{
case 0:/*超时*/
//g_log.Error("连接超时!");
break;
case -1:/*错误发生*/
g_log.Error("连接异常!");
break;
default:/*有可读套接字文件描述符*/
//g_log.Debug( "data come" );
if(m_connect_number<=0)
break;
for(i = 0; i < TCPServer::m_maxClient; i++)
{
/*查找激活的文件描述符*/
if( m_pconnectHost[i] != -1 )
{
if( FD_ISSET(m_pconnectHost[i], &scanfd) )
{
memset( &m_pbuf[0],