日期:2014-05-16 浏览次数:21121 次
void *RecvFromAPP(void *arg) { char buf[2048+1]={0}; char temp[2048+1]={0}; int pos=0; int res=0; int len=0; while(1) { if(pos<len) { memset(temp,0,sizeof(temp)); memcpy(temp,buf+pos,len-pos); memset(buf,0,sizeof(buf)); memcpy(buf,temp,len-pos); pos=len-pos; } else pos=0; res=read_loop(app_arg.appsockfd,buf+pos,2048-pos); if(res==-1) break; else if(res==0) { Socket_Delete(app_arg.appsockfd); break; } else if(res>0) { len=pos+res; pos=Packet_DetachFromAPP(buf,len); //这个是分成完整的包,并放到队列中,会用来队列锁 } } return NULL; }