优化tcp通信
This commit is contained in:
parent
5018130ea1
commit
aa85119143
@ -495,13 +495,13 @@ void MainWindow::sendUpgradePackage(int slot)
|
|||||||
UpgradeCardReq upgrade_car_req;
|
UpgradeCardReq upgrade_car_req;
|
||||||
uint8_t card_id;
|
uint8_t card_id;
|
||||||
if(slot == 0)
|
if(slot == 0)
|
||||||
card_id = 0xFF;
|
upgrade_car_req.card_id = 0xFF;
|
||||||
else
|
else
|
||||||
card_id = slot & 0xFF;
|
upgrade_car_req.card_id = slot & 0xFF;
|
||||||
|
|
||||||
header.crc = calculate_crc(upgrade_car_req.card_id,fileData);
|
header.crc = calculate_crc(upgrade_car_req.card_id,fileData);
|
||||||
header.len = fileSize;
|
header.len = fileSize;
|
||||||
qDebug() << "filheader.crc" << header.crc;
|
qDebug() << "filheader.crc" << header.crc << "card_id" << upgrade_car_req.card_id << endl;
|
||||||
// 发送头部数据
|
// 发送头部数据
|
||||||
//QByteArray packet(reinterpret_cast<char*>(&header), sizeof(PackageHead));
|
//QByteArray packet(reinterpret_cast<char*>(&header), sizeof(PackageHead));
|
||||||
|
|
||||||
@ -520,25 +520,49 @@ void MainWindow::sendUpgradePackage(int slot)
|
|||||||
send_buf = (char *)malloc(sizeof(PackageHead) + sizeof(UpgradeCardReq) + fileData.size() + 1);
|
send_buf = (char *)malloc(sizeof(PackageHead) + sizeof(UpgradeCardReq) + fileData.size() + 1);
|
||||||
memset(send_buf,0,sizeof(PackageHead) + sizeof(UpgradeCardReq) + fileData.size() + 1);
|
memset(send_buf,0,sizeof(PackageHead) + sizeof(UpgradeCardReq) + fileData.size() + 1);
|
||||||
memcpy(send_buf, &header, sizeof(PackageHead));
|
memcpy(send_buf, &header, sizeof(PackageHead));
|
||||||
memcpy(send_buf + sizeof(PackageHead), &card_id, 1);
|
memcpy(send_buf + sizeof(PackageHead), &upgrade_car_req, sizeof(UpgradeCardReq));
|
||||||
memcpy(send_buf + sizeof(PackageHead) + 1, fileData.data(), fileData.size());
|
memcpy(send_buf + sizeof(PackageHead) + sizeof(UpgradeCardReq), fileData.data(), fileData.size());
|
||||||
socket.write(send_buf);
|
|
||||||
socket.waitForBytesWritten();
|
int length = sizeof(PackageHead) + sizeof(UpgradeCardReq) + fileData.size();
|
||||||
|
|
||||||
|
const int MAX_CHUNK_SIZE = 50 * 1024; // 64 KB
|
||||||
|
qint64 bytesSent = 0;
|
||||||
|
qint64 totalBytes = length;
|
||||||
|
qDebug() << "totalBytes" << totalBytes << endl;
|
||||||
|
|
||||||
|
while (bytesSent < totalBytes) {
|
||||||
|
qint64 chunkSize = 0;
|
||||||
|
if(MAX_CHUNK_SIZE < totalBytes - bytesSent){
|
||||||
|
chunkSize = MAX_CHUNK_SIZE;
|
||||||
|
}else{
|
||||||
|
chunkSize = totalBytes - bytesSent;
|
||||||
|
}
|
||||||
|
qint64 bytesWritten = socket.write(send_buf + bytesSent, chunkSize);
|
||||||
|
socket.waitForBytesWritten();
|
||||||
|
qDebug() << "bytesWritten" << bytesWritten << "bytesSent" << bytesSent << endl;
|
||||||
|
if (bytesWritten == -1) {
|
||||||
|
// Handle error
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
bytesSent += bytesWritten;
|
||||||
|
}
|
||||||
|
|
||||||
// 发送头部
|
// 发送头部
|
||||||
// qDebug() << "File sent successfully";
|
// qDebug() << "File sent successfully";
|
||||||
// // 等待服务器响应(根据需要处理响应)
|
// // 等待服务器响应(根据需要处理响应)
|
||||||
|
|
||||||
// if (socket.waitForReadyRead()) {
|
if (socket.waitForReadyRead()) {
|
||||||
// QByteArray response = socket.readAll();
|
QByteArray response = socket.readAll();
|
||||||
// UpgradeRsp resp;
|
UpgradeRsp resp;
|
||||||
// QByteArray byteArray = response.mid(sizeof(PackageHead));
|
QByteArray byteArray = response.mid(sizeof(PackageHead));
|
||||||
// QDataStream stream(&byteArray, QIODevice::ReadOnly);
|
QDataStream stream(&byteArray, QIODevice::ReadOnly);
|
||||||
// stream >> resp.code ;
|
stream >> resp.code ;
|
||||||
// if(resp.code == 1){
|
if(resp.code == 1){
|
||||||
// QMessageBox::information(this, QStringLiteral("提示"), "上传成功!");
|
QMessageBox::information(this, QStringLiteral("提示"), "上传成功!");
|
||||||
// }
|
}
|
||||||
// qDebug() << "Server response: " << resp.code;
|
qDebug() << "Server response: " << resp.code;
|
||||||
// }
|
}
|
||||||
// 关闭文件和连接
|
// 关闭文件和连接
|
||||||
file.close();
|
file.close();
|
||||||
socket.disconnectFromHost();
|
socket.disconnectFromHost();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user