我想将TCP连接基准测试到ECU(传输)
为此,我想发送一些数据。可以在我的GUI中将数据量从x KB设置为x GB。
transferSize是根据GUI中设置的值计算的。缓冲区大小为1024:
#define BENCHMARK_TRANSFER_BUFFER_SIZE 1024
void logic::TransferAndLatencyEthernetBenchmark::transferDataTcp(TCPClient& tcpclient)
{
uint32_t toSend = transferSize;
uint32_t currentSendSize = 0;
while (toSend > 0)
{
if (toSend / BENCHMARK_TRANSFER_BUFFER_SIZE >= 1)
{
currentSendSize = BENCHMARK_TRANSFER_BUFFER_SIZE;
}
else if ((toSend / BENCHMARK_TRANSFER_BUFFER_SIZE) == 0)
{
currentSendSize = toSend % BENCHMARK_TRANSFER_BUFFER_SIZE;
}
toSend -= currentSendSize;
tcpclient.sendData(transferSendBuffer, currentSendSize);
}
}
所以iam调用tcpclient.sendData(transferSendBuffer,currentSendSize)函数,只要发送> 0:
...
QDataStream out;
....
void TCPClient::sendData(uint8_t* buffer, uint32_t size)
{
qDebug() << "current send size: " << size << " - Transfer send buffer: " << (const char*)buffer;
for (int i=0; i<size; i++)
{
buffer[i] = 'a';
}
out.setDevice(socket_aurix);
out.writeBytes((const char*)buffer, size);
}
我在Qt上很新(C ++ in generel)并且我确定我做错了;) 它实际上有效但在我尝试时崩溃,发送更大的数据。
什么是更好的方法来初始化数组而不是for循环?
什么是使用QDataStream的更好的方法?
非常感谢。