Esempio n. 1
0
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));
	}
}
Esempio n. 2
0
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;
}