void ClientSktUdp::newData() { QUdpSocket* s = qobject_cast<QUdpSocket*>(sender()); if (!s) return; qint64 bufLen = s->bytesAvailable(); char* buf = TK::createBuffer(bufLen, MAXBUFFER); if (!buf) return; qint64 readLen = 0; qint64 ioLen = s->read(buf, bufLen); while (ioLen > 0) { readLen += ioLen; ioLen = s->read(buf+readLen, bufLen-readLen); } if (ioLen >= 0) { recordRecv(readLen); dump(buf, readLen, false); } TK::releaseBuffer(buf); }
void ServerSktTcp::newData() { QTcpSocket* client = qobject_cast<QTcpSocket*>(sender()); if (!client) return; Conn* conn = (Conn*)client->property(PROP_CONN).value<void*>(); if (!conn) return; qint64 bufLen = client->bytesAvailable(); char* buf = TK::createBuffer(bufLen, MAXBUFFER); if (!buf) return; qint64 readLen = 0; qint64 ioLen = client->read(buf, bufLen); while (ioLen > 0) { readLen += ioLen; ioLen = client->read(buf+readLen, bufLen-readLen); } if (ioLen >= 0) { recordRecv(readLen); dump(buf, readLen, false, conn->key); } TK::releaseBuffer(buf); }
void ServerSktUdp::newData() { QUdpSocket* s = qobject_cast<QUdpSocket*>(sender()); if (!s) return; qint64 bufLen = s->pendingDatagramSize(); char* buf = TK::createBuffer(bufLen, MAXBUFFER); if (!buf) return; QHostAddress addr; quint16 port(0); qint64 readLen = 0; qint64 ioLen = s->readDatagram(buf, bufLen, &addr, &port); //while (ioLen > 0) //{ readLen += ioLen; // ioLen = s->readDatagram(buf+readLen, bufLen-readLen, &addr, &port); //} if (ioLen >= 0) { Conn* conn = (Conn*)getCookie(TK::ipstr(addr, port, false)); if (!conn) { conn = new Conn; if (conn) { conn->key = TK::ipstr(addr, port, false); conn->addr = addr; conn->port = port; setCookie(conn->key, conn); } } if (conn) { recordRecv(readLen); conn->stamp = QDateTime::currentDateTime(); dump(buf, readLen, false, conn->key); } } TK::releaseBuffer(buf); }