int ClientService::handle_input(ACE_HANDLE fd)
{
//printf("服务器连接上了");
const size_t INPUT_SIZE = 4096;
char buffer[INPUT_SIZE];
int i;
ssize_t recv_cnt;
if ((recv_cnt = this->sock_.recv(buffer, sizeof (buffer)),100) <= 0)
{
//接受到的数据为0个字节,表明对端已关闭其socket。
//返回-1,表示工作已完成。
return -1;
}
for(i=0;i<recv_cnt;i++)
{
printf("%d",buffer);
}
//将数据插入链表
for(i=0;i<recv_cnt;i++)
{
listTT2000.InsertNode(listTT2000.m_listLength+1,buffer);
}
return 0;
}
我需要做的事:链接成功,接收服务器端接收过来的数据,放入链表中坐解析。我使用的是reactor 模型。
现在的问题是:我如果使用超时,sock_.recv(buffer, sizeof (buffer)),100),则基本处于超时状态,返回值一直为-1.这里,超时和退出分不开。
如果我不使用超时,sock_.recv(buffer, sizeof (buffer)),则当一批数据来时,cpu 使用率爆增。这种问题该怎样来解决呢,谢谢了
[ 本帖最后由 jj601 于 2009-6-30 11:16 编辑 ] |