Сформированный пакет клиент не может отправить серверу по tcp
Всем привет. Столкнулся с проблемой отправки сформированного пакета от клиента серверу. Нашел старый вопрос где комментатор расписал по сути то что я и делаю. Сообщение от клиента серверу
У клиента я формирую пакет такого вида ""header""message.size""message"" Соединение установлено, но клиент ничего не отправляет. Ниже 2 метода, один проверка и отправка а второй(из буфера) отдает для отправки сам пакет
void MyClient::sendToServer()
{
if(m_pBuffNetworkWrite->getSize() > 32)
{
uint8_t size = m_pBuffNetworkWrite->getSize();
auto buffToServer = m_pBuffNetworkWrite->popUp(size);
auto countSendData = m_pSocket->write(reinterpret_cast<const char *>(buffToServer));
if (countSendData > 0)
{
qDebug() << "data sent to server";
}
else
{
qDebug() << "data not sent to server";
}
}
Этот метод отдает данные которые были уже раньше записаны и размер самого пакета.
uint8_t* BuffNetworkWrite::popUp(int size)
{
QMutexLocker locker(&m_mutex);
if (m_iSize < size)
{
return nullptr;
}
auto* pTmp = new uint8_t(size);
memset(pTmp, 0, size);
memcpy(pTmp, m_pData, size);
memcpy(m_pData, m_pData + size, m_iSize - size);
m_iSize = size;
return pTmp;
}
Буду признателен за советы или указание где стоит искать проблему.
Добавляю метод которым я формирую пакет
uint8_t *PackNetwork::toByte(uint32_t &size)
{
uint8_t *dataBuffer = new uint8_t[m_packHeader.size]; // буфер размером заголовок + размер сообщения + сообщение
memcpy(dataBuffer, &m_packHeader, sizeof(packHeader));
uint8_t *byteData = nullptr;
uint32_t offset = sizeof(packHeader);
for (auto &item : m_dataList)
{
uint32_t sizeData = 0;
byteData = item->toByte(sizeData); // после метода sizeData имеет размер сообщения, byteData это сообщение
memcpy(dataBuffer + offset, byteData, sizeData);
offset += sizeData;
}
size = m_packHeader.size;
return dataBuffer;
}
Аргумент size при входе в метод 0 а после уже меняется. Если я в методе заменю возвращение пакета то что мне надо дял сервера просто на строку из byteData то сервер реагирует на примем. И само собою у клиенат я вижу сообщение data sent to server