int TCPClient::Read(char* data,int len ,int timeout , char * delem,int delm_len,int &r) { int l; timeval t_out; fd_set set; t_out.tv_sec = timeout; t_out.tv_usec = 0; FD_ZERO(&set); FD_SET(Socket,&set); l = select(Socket +1, &set, NULL, NULL, &t_out); setsockopt(Socket,SOL_SOCKET,SO_RCVTIMEO|SO_LINGER,(char*)&t_out,sizeof(struct timeval)); if(l==0) { printf("\n time out %i \n",timeout); return -10; } else if(len<0) { printf("\n error in select 2 TCPClient \n"); return -5; } char a[2] = "\0"; memset(data,0,strlen(data)); // strcpy(data," "); ssize_t l1; int i = 0; int cycle = 0; while(true) { l1 = recv(Socket,a,1,0); if(l1==0) { printf("\n closed \n"); i = 0; break; } if(l1 == -1) { cycle++; if(r==5 && cycle<4) { sleep(1); printf("wait"); continue; } break; } data = stpcpy(data,a); i +=l1; if(delm_len>1 && strstr(data,delem)!=NULL) { printf("\n hit strstr \n "); break; } else if(delm_len==1 && delem[0]==a[0]) { r = 1; break; } if(i>=len && r==1) break; }//while(i< len) ; // printf("\n data recv %i r = %i ",i,r); //printf("\n block data return %s \n",data); return i; }
var
This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)