tftp上传文件错误tftp:read error

在Linux内核做的cpu中操作,上传文件到tftp服务器中,发现报错 tftp:read error

一直不知道怎么回事。后来发现tftp服务端对应的文件夹里已经生成了那个文件。

报这个错的原因是我生成了一个空文件。换了一个txt文件,里面写了一些内容后就不报错了。

 

PS:补充知识点

tftp分为客户端和服务端。客户端是接收的,服务端是用来发送的。Window系统中这个软件就包括了服务端和接收端

tftpd就是客户端的意思

Qt 是一个强大的跨平台应用程序开发框架,它提供了丰富的图形用户界面工具和网络通信功能,包括与 TFTP(Trivial File Transfer Protocol)服务器的交互。要在 Qt 应用中实现向 TFTP 服务器上传文件,你需要遵循以下步骤: 1. 引入所需库:首先,确保你的项目包含了 Qt 的网络模块(QtNetwork),因为 TFTP 通信是在这个模块中处理的。 ```cpp #include <QObject> #include <QHostAddress> #include <QUdpSocket> #include <QNetworkAccessManager> #include <QNetworkRequest> ``` 2. 创建 UDP 会话:使用 `QUdpSocket` 类创建一个 UDP 套接字来发送数据到 TFTP 服务器。 ```cpp QUdpSocket *udpSocket = new QUdpSocket(this); if (!udpSocket->bind(0)) { // 处理绑定失败 } ``` 3. 发起 TFTP 请求:使用 `QNetworkAccessManager` 实现 TFTP 的 GET 或 PUT 请求。对于上传文件,通常会使用 PUT 方法。 ```cpp QNetworkAccessManager *manager = new QNetworkAccessManager(this); QNetworkRequest request(QUrl(QStringLiteral("tftp://<server_ip>/<file_path>"))); request.setRawHeader("Method", "PUT"); // 设置请求方法为 PUT connect(manager, &QNetworkAccessManager::finished, this, &YourClass::handleTftpResponse); manager->put(request, QByteArray()); ``` 4. 处理响应:在 `handleTftpResponse` 函数中检查上传状态并处理返回的数据。 ```cpp void YourClass::handleTftpResponse(QNetworkReply *reply) { if (reply->error()) { // 处理错误 } else { QByteArray data = reply->readAll(); // 检查数据确认上传完成或处理错误 } reply->deleteLater(); } ``` 5. 数据分块传输:由于 TFTP 是基于文本协议的,如果文件较大,可能需要分块传输。你可以使用循环或生成器函数来逐块读取并发送数据。 6. 关闭连接:上传完成后,记得关闭 UDP 套接字和网络访问管理器。 ```cpp udpSocket->close(); delete udpSocket; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值