硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3708|回复: 10
收起左侧

[ThreadX全家桶] 分享下自己修改的NetX DUO ftp server组件,板子做服务端,pc用一些ftp工具能正常访问

  [复制链接]

2

主题

23

回帖

29

积分

新手上路

积分
29
发表于 2021-8-13 18:36:15 | 显示全部楼层 |阅读模式
本帖最后由 luguan1997 于 2021-8-16 14:09 编辑

使用netx duo(6.1.8)的上层组件很简单,例如ftp 服务器调用nx_ftp_server_create和nx_ftp_server_start即可,但是客户端的ftp软件有很多,实际通讯可能会有各种问题。我用到了fileZilla WinSCP 以及windous10下资源管理器自带的ftp去测试,遇到一些问题,修改了nxd_ftp_server.c 使得可以正常使用(上面三种主动 被动都可以, fileZilla要限制并发数,winSCP旧版本主动模式不行,新版本可以)。现存的风险就是被动模式下由服务器创建 数据端口可能创建两次 而只关闭一次(ftp 客户端抽风 发了两次PASV 命令),危害很隐蔽,看上去正常,运行一段时间后会造成1.搜索tcp table 下socket时有空指针 2.tcp listern的队列满 无法监听。彻底解决这里需要修正下nx_ftp_server的逻辑,我还没解决,只是避开了(只测了上述三种软件还没遇到这种情况)


nxd_ftp_server.rar

25.02 KB, 下载次数: 94

评分

参与人数 1金币 +50 收起 理由
eric2013 + 50 赞一个!

查看全部评分

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115896
QQ
发表于 2021-8-14 08:58:58 | 显示全部楼层
谢谢楼主分享

可以使用FlashFXP 试试
回复

使用道具 举报

2

主题

23

回帖

29

积分

新手上路

积分
29
 楼主| 发表于 2021-8-16 13:59:06 | 显示全部楼层
又改了下,修改的几处代码里都用TODO标了,FLASHFXP也能用了,除了ipv6我没测试过,暂时没发现其他问题,还有就是ftp软件第一装好后,如果用主动模式,防火墙(windous下)会拦截,第一次访问会失败,网络允许访问后,把ftp软件关了再重连下就可以连了
回复

使用道具 举报

58

主题

267

回帖

446

积分

高级会员

积分
446
发表于 2022-9-6 22:38:57 | 显示全部楼层
你好,你的 FTP 服务器有没有出现连续上传,或一次性上传多个文件,或一次拖动一个包含多个文件的文件夹(50个文件以上容易出现)时,会出现上传卡住,但是服务器没死,过一会又恢复了。
卡顿不会造成服务器死机,但是会导致上传的文件不完整,偶尔会有上传失败。
把不完整或失败的文件再传一次就好了。。

楼主有没有遇到过这个问题?
回复

使用道具 举报

58

主题

267

回帖

446

积分

高级会员

积分
446
发表于 2022-9-9 10:33:54 | 显示全部楼层
ihavedone 发表于 2022-9-6 22:38
你好,你的 FTP 服务器有没有出现连续上传,或一次性上传多个文件,或一次拖动一个包含多个文件的文件夹(5 ...

找到了问题的一半原因。

在写入 SD 卡的时候,会有一个等待 DMA 传输完成的信号量,这个信号量在 DMA 传输完成中断中被设置。
我设置等待信号量的超时时间为 10s,但是多次通信后就会偶尔出现等待超时的情况。
超时后就会有一个包未被写入文件,最终关闭数据连接时,文件实际大小与传输的数据大小不一致,判定为传输失败。。

但为什么写入 SD 卡会 10s 都不成功,这个问题还没搞清楚。
回复

使用道具 举报

58

主题

267

回帖

446

积分

高级会员

积分
446
发表于 2022-9-9 12:53:39 | 显示全部楼层
ihavedone 发表于 2022-9-9 10:33
找到了问题的一半原因。

在写入 SD 卡的时候,会有一个等待 DMA 传输完成的信号量,这个信号量在 DMA  ...

搞定 SD 卡写入超时的问题。
之前 SDMMC 外设时钟 200M,分频数 2,现在分频数改成 4 就没出现过写入超时了。改成 3 超时出现的频率大大降低。
回复

使用道具 举报

58

主题

267

回帖

446

积分

高级会员

积分
446
发表于 2022-9-9 13:34:20 | 显示全部楼层
ihavedone 发表于 2022-9-9 12:53
搞定 SD 卡写入超时的问题。
之前 SDMMC 外设时钟 200M,分频数 2,现在分频数改成 4 就没出现过写入超 ...

坑爹,用 FlashFXP 可以,但是用 FileZilla 还是会有失败。
并且 FileZilla 有一个坑的问题是如果传输的文件内容不完整,他也返回成功。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115896
QQ
发表于 2022-9-9 13:53:36 | 显示全部楼层
ihavedone 发表于 2022-9-9 13:34
坑爹,用 FlashFXP 可以,但是用 FileZilla 还是会有失败。
并且 FileZilla 有一个坑的问题是如果传输的 ...

Windows上基本都用FlashFXP

FileZilla 难用的一逼,我现在已经不用了。
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2024-6-25 16:22:08 | 显示全部楼层
我NetXDuo ftp客户端发送用户名的时候收不到包
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115896
QQ
发表于 2024-6-26 08:45:14 | 显示全部楼层
3010540635 发表于 2024-6-25 16:22
我NetXDuo ftp客户端发送用户名的时候收不到包

后面我试试。
回复

使用道具 举报

2

主题

18

回帖

24

积分

新手上路

积分
24
发表于 2024-8-8 16:25:58 | 显示全部楼层
谢谢楼主分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-25 18:33 , Processed in 0.365042 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表