inline int IPString2Int(cf_cpstr ip,cf_uint32 & rsl) { struct in_addr s; // IPv4地址结构体 int rt =inet_pton(AF_INET, ip, (void *)&s); rsl =cf_uint32(s.s_addr); return rt; }
cf_uint32 ReadPid() { char p [MAX_SIZE]; GetPathByPathNameExt(_filePathName.c_str(), _filePathName.size() , p); if(0==IsFileExist(p)) { _THROW_FMT(RuntimeWarning, "Failed access file %s !",p); } _fd =cf_open(_filePathName.c_str(),O_RDWR,S_IRWXU | S_IRWXG | S_IROTH); if(-1==_fd) { _THROW(SyscallExecuteError, "Failed to execute cf_open !"); } char buf[8] = {0}; ssize_t nr =cf_read(_fd,buf,sizeof(buf)); if(nr<=0) { _THROW_FMT(ValueError, "Failed cf_read ! nr=%d ",int(nr)); } return cf_uint32(atoi(buf)); }
cf_pvoid Run(void * p) { CF_PRINT_FUNC; int index =*((int *)p); cf_fd sockfd=g_vecSock[index]; // printf("index=%d,sockfd=%d \n",index,sockfd); ssize_t hasSent =0; ssize_t hasRecv =0; ssize_t shouldRecv =0; bool peerClosedWhenRead =false; cf_uint64 seconds =0; cf_uint32 useconds =0; cf::Gettimeofday(seconds, useconds); for(int k=0; k<g_times; k++) // send times { std::string & body =g_vecStr[k]; hasSent =0; bool succ =cf::SendSegmentSync(sockfd,body.c_str(), body.size(),hasSent,8000, body.size()); if(succ) { #if 1 fprintf(stderr,"tid=%u,Sent succeeded ! hasSent=%d ,k=%d ",TID,int(hasSent),k); fprintf(stderr,"tid=%u,buff=%s \n",TID,body.c_str()+HEADER_LEN); #endif } else fprintf(stderr,"tid=%u,Warning,Send timeout ! \n",TID); if(hasSent!=(cf_uint32)body.size()) fprintf(stderr,"tid=%u,Warning,Recved len{%u}!=body.size(){%u}! \n",TID, (cf_uint32)hasSent,(cf_uint32)(body.size())); peerClosedWhenRead =false; hasRecv =0; shouldRecv =hasSent-HEADER_LEN; succ =cf::RecvSegmentSync(sockfd,&g_bufrecv[0], shouldRecv,hasRecv, peerClosedWhenRead,8000); if(succ) { #if 1 fprintf(stderr,"tid=%u,Recv succeeded ! hasRecv=%d ,k=%d ,",TID,int(hasRecv),k); fprintf(stderr,"tid=%u,buff=%s \n",TID,g_bufrecv.c_str()); #endif } else fprintf(stderr,"tid=%u,Warning,Recv timeout ! \n",TID); if(hasRecv!=shouldRecv) fprintf(stderr, "tid=%u,Warning,Recved hasRecv{%u}!=shouldRecv{%u}! peerClosedWhenRead=%u \n", TID, (cf_uint32)hasRecv,(cf_uint32)shouldRecv,cf_uint32(peerClosedWhenRead)); } #if 1 fprintf(stderr,"tid=%u,cf_close!\n",TID); #endif cf_close(sockfd); return NULL; }