下面是一个使用Qt实现的客户端向服务端发送文件的示例代码:
// 客户端
#include <QTcpSocket>
#include <QFile>
void sendFileToServer(const QString& filePath)
{
QFile file(filePath);
if (!file.open(QIODevice::ReadOnly)) {
qDebug() << "无法打开文件:" << file.errorString();
return;
}
QTcpSocket socket;
socket.connectToHost("服务器IP地址", 12345); // 替换为实际的服务器IP地址和端口号
if (!socket.waitForConnected()) {
qDebug() << "无法连接到服务器:" << socket.errorString();
return;
}
// 发送文件名和大小给服务器
QString fileName = QFileInfo(file.fileName()).fileName();
qint64 fileSize = file.size();
QByteArray data = QString("%1:%2").arg(fileName).arg(fileSize).toUtf8();
socket.write(data);
// 发送文件内容给服务器
while (!file.atEnd()) {
QByteArray buffer = file.read(8192); // 每次读取8KB数据
socket.write(buffer);
if (!socket.waitForBytesWritten()) {
qDebug() << "写入套接字错误:" << socket.errorString();
break;
}
}
// 关闭套接字和文件
socket.close();
file.close();
}
这是一个简单的示例,你需要将其中的”服务器IP地址”和端口号替换为实际使用的值。另外,请确保在服务端编写相应代码来接收并处理客户端发送过来的文件数据。
请注意,以上代码只是一个基本示例,实际情况下你可能还需要添加错误处理、进度更新等功能。
内容由零声教学AI助手提供,问题来源于学员提问