用QT5写一个可以在电脑上通过TCP客户端将指定文件发送到服务器的工程
时间: 2023-12-04 20:06:17 浏览: 95
QT5下实现基于TCP发送和接接收文件
5星 · 资源好评率100%
以下是一个简单的基于QT5的TCP客户端发送文件到服务器的示例代码:
```
#include <QtNetwork>
#include <QFile>
#include <QDataStream>
void sendFileToServer() {
// 服务器地址和端口
QHostAddress address("server_ip_address");
quint16 port = 8888;
// 创建TCP socket
QTcpSocket socket;
socket.connectToHost(address, port);
if (socket.waitForConnected()) {
// 打开文件
QFile file("path/to/file");
if (file.open(QIODevice::ReadOnly)) {
// 创建数据流,并设置版本号
QDataStream dataStream(&socket);
dataStream.setVersion(QDataStream::Qt_5_15);
// 发送文件名和文件大小
dataStream << file.fileName() << (quint64)file.size();
// 发送文件内容
char buffer[4096];
qint64 bytesRead = 0;
qint64 bytesTotal = 0;
while ((bytesRead = file.read(buffer, sizeof(buffer))) > 0) {
bytesTotal += bytesRead;
dataStream.writeRawData(buffer, bytesRead);
}
// 关闭文件
file.close();
// 确认数据已发送
if (socket.flush()) {
qDebug() << "File sent successfully. Total bytes sent: " << bytesTotal;
}
}
} else {
qDebug() << "Failed to connect to server.";
}
// 断开连接
socket.disconnectFromHost();
}
```
这个示例代码通过TCP客户端连接到指定的服务器,然后打开文件并将文件名和大小发送到服务器,最后发送文件内容。在发送数据之后,程序会等待数据被完全发送出去并且被服务器确认接收到之后才会断开连接。
阅读全文