下面是一个使用Qt C++进行文件传输的简单案例:
- 服务端代码(Server):
#include <QTcpServer>
#include <QTcpSocket>
void Server::startServer()
{
QTcpServer *server = new QTcpServer(this);
connect(server, SIGNAL(newConnection()), this, SLOT(newConnection()));
if (!server->listen(QHostAddress::Any, 1234)) {
qDebug() << "Server could not start.";
} else {
qDebug() << "Server started.";
}
}
void Server::newConnection()
{
QTcpSocket *socket = server->nextPendingConnection();
// 读取文件数据
QFile file("path/to/file");
if (!file.open(QIODevice::ReadOnly)) {
qDebug() << "Failed to open file for reading.";
return;
}
QByteArray data = file.readAll();
// 发送文件数据
socket->write(data);
// 关闭连接
socket->disconnectFromHost();
}
- 客户端代码(Client):
#include <QTcpSocket>
void Client::startClient()
{
QTcpSocket *socket = new QTcpSocket(this);
connect(socket, SIGNAL(connected()), this, SLOT(connected()));
connect(socket, SIGNAL(disconnected()), this, SLOT(disconnected()));
socket->connectToHost("localhost", 1234);
if(!socket->waitForConnected()) {
qDebug() << "Could not connect to server.";
return;
}
}
void Client::connected()
{
qDebug() << "Connected to server.";
// 接收文件数据
QByteArray data = socket->readAll();
// 写入文件
QFile file("path/to/save/file");
if (!file.open(QIODevice::WriteOnly)) {
qDebug() << "Failed to open file for writing.";
return;
}
file.write(data);
file.close();
// 断开连接
socket->disconnectFromHost();
}
请注意,这只是一个简单的文件传输示例,没有处理错误和异常情况。在实际使用中,你需要根据具体需求进行错误处理和更完善的代码编写。
内容由零声教学AI助手提供,问题来源于学员提问