使用 tftp 无法向服务器上传文件问题解决

111 篇文章 35 订阅

问题描述

在 ubuntu 上启动了 tftpd,作为 tftp 服务器为嵌入式开发板提供文件下载服务。今天想用 tftp 将开发板上的一个文件上传到 ubuntu,结果报错了

# ls
core
# tftp -pr core 192.168.31.223
tftp: server error: (1) File not found

平时下载都是好好的,怎么上传就不行了呢?

解决

经过一番搜索,了解到 tftpd 启动参数要加 -c 选项,该选项表示允许创建文件
原本命令

/usr/sbin/in.tftpd --listen --user tftp --address :69 --secure /home/liyongjun/tftp

修改为

/usr/sbin/in.tftpd --listen --user tftp --address :69 -c --secure /home/liyongjun/tftp

注意,要使用 root 权限执行
再次尝试,又报了如下错误

# tftp -pr core  192.168.31.223
tftp: server error: (0) Permission denied

原来是目录权限不够,修改

sudo chmod 777 ~/tftp/

再次在开发板上执行

# tftp -pr core  192.168.31.223
# 

就成功了!

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: LWIP(Lightweight IP)是一个轻量级的、能实现TCP/IP协议栈的开源软件库。而TFTP(Trivial File Transfer Protocol)是一种简单的文件传输协议。 使用LWIP库提供的函数,可以通过TFTP协议上传文件。首先,需要创建一个TFTP客户端,并设置服务器的IP地址和端口号。然后,指定上传的文件名和文件的位置。可以使用lwip_tftp_put()函数来实现上传。 在上传过程中,TFTP客户端将文件分割成多个数据包,并通过TFTP协议发送给服务器服务器接收到数据包后,会进行校验,并发送确认消息回复给客户端。客户端根据服务器的回复继续发送下一个数据包,直到文件上传完成。 在上传完成后,服务器会发送一个最终确认消息给客户端,表示文件上传成功。客户端可以根据这个确认消息做进一步的处理,例如关闭TFTP客户端连接。 总而言之,使用LWIP库提供的TFTP客户端函数,可以方便地实现文件上传功能。通过指定服务器的IP地址和端口号,以及上传的文件名和位置,即可将文件通过TFTP协议上传服务器。 ### 回答2: lwIP是一个轻量级的TCP/IP协议栈,提供了用于嵌入式系统的网络通信功能。其中包括了使用TFTP(Trivial File Transfer Protocol,简单文件传输协议)上传文件的功能。 在lwIP中,使用TFTP上传文件可以通过以下步骤完成: 1. 初始化lwIP协议栈:首先需要初始化lwIP协议栈,包括网络接口、IP地址等信息的配置。 2. 创建TFTP客户端:接下来,需要创建一个TFTP客户端实例,用于进行文件传输。 3. 配置TFTP服务器信息:在TFTP客户端中,需要配置TFTP服务器的IP地址和端口号,以及上传文件的目标路径。 4. 打开本地文件:在进行文件上传之前,需要打开本地的待上传文件,并进行读取准备。 5. 启动TFTP上传:当上述准备工作完成后,可以调用TFTP客户端的上传函数,将本地文件上传TFTP服务器。 6. 监听上传状态:在上传过程中,可以通过回调函数获取上传状态的通知,包括传输进度、错误信息等。 7. 关闭TFTP客户端和本地文件:上传完成后,需要关闭TFTP客户端和本地文件的句柄,释放相关资源。 通过以上步骤,就可以使用lwIP中的TFTP功能进行文件上传。需要注意的是,具体的实现可能会根据不同的嵌入式系统和应用场景而有所差异,因此在使用时需要参考lwIP和TFTP相关的文档和示例代码进行配置和开发。 ### 回答3: lwIP是一个轻量级的开源TCP/IP协议栈,支持多种网络连接,包括以太网、Wi-Fi和PPP等。TFTP(Trivial File Transfer Protocol)是一种简单的文件传输协议,常用于嵌入式系统中对设备进行固件升级或配置文件传输。 在lwIP中使用TFTP协议上传文件可以通过以下步骤实现: 1. 配置lwIP的TFTP选项:在lwIP的配置文件中,需要开启TFTP相关选项,并配置TFTP服务器的IP地址、端口号和存储路径等参数。 2. 创建TFTP服务器进程:在系统初始化时,创建一个TFTP服务器进程,用于接收来自客户端的TFTP请求和文件传输。 3. 处理TFTP请求:当客户端发送TFTP请求时,TFTP服务器进程会根据请求类型(读请求或写请求)进行相应的处理。 4. 读请求处理:如果是读请求,即客户端请求从服务器读取文件,TFTP服务器会检查文件是否存在并可读,然后逐块地将文件内容发送给客户端。 5. 写请求处理:如果是写请求,即客户端请求上传文件服务器TFTP服务器会检查是否有足够的存储空间和权限,然后逐块地接收客户端发送的文件内容,并写入到指定的存储路径下。 6. 传输结束处理:在文件传输结束后,TFTP服务器会发送相应的响应消息给客户端,并关闭相关的连接。 通过以上步骤,就可以实现lwIP中使用TFTP上传文件的功能。值得注意的是,在使用TFTP上传文件时,需要保证服务器和客户端之间的网络连接正常,并且服务器的存储空间和权限设置正确,以确保文件传输顺利完成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Li-Yongjun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值