void Client::parseIncoming() { char *p = (char *)&buff; char *x; while(true) { x = p; p = strstr(p,"\\final\\"); if(p == NULL) { break; } *(p+1) = 0; p+=7; parseIncoming((char *)x,strlen(x)); } if(strlen(x) > 7 && (x - (char *)&buff) < len) { parseIncoming((char *)x,strlen(x)); } }
void Client::mainLoop(fd_set *rset) { if(!FD_ISSET(sd,rset)) return; memset(&buff,0,sizeof(buff)); len = recv(sd,buff,sizeof(buff),0); if(len<1) goto end; lastPacket = time(NULL); if(!do_db_check()) return gamespy3dxor(buff, len); buff[len]=0; makeStringSafe((char *)&buff, sizeof(buff)); parseIncoming(); return; end: deleteClient(this); }
bool ClientAJAKumoTCP::receiveData() { _inputPos = 0; memset(_inputBuffer, 0, ClientAJAKumoTCP_INPUTBUFFER_SIZE); while(_client.available() && _inputPos < ClientAJAKumoTCP_INPUTBUFFER_SIZE) { char c = _client.read(); _inputBuffer[_inputPos++] = c; if(_serialOutput > 1) Serial << _HEXPADL(c, 2, "0") << ":"; if(c == 0x04) { if(_serialOutput > 1) { Serial << " : " << (char*)_inputBuffer << "\n"; } parseIncoming(_inputBuffer, _inputPos); _inputPos = 0; return true; } } return false; }