FTP Port模式使用的问题

chzhk007 2009-04-29 11:46:58
FTP 客户端使用Port命令建立TCP数据连接后,我想重用现有的socket和port,继续接受数据,但是只有第一次成功,后面的总失败,不知道是何原因,难道每次接受数据完毕后服务器会关闭数据连接吗?
...全文
487 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
udknight 2009-06-18
  • 打赏
  • 举报
回复
被port模式折腾了很久,最后改pasv模式了。
liu_yi_shanghai 2009-06-18
  • 打赏
  • 举报
回复
我也正在写FTP主动模式。我发现不同的服务器处理不一样。
Serv-U的服务器PORT命令发一回就可以了。
IIS的服务器每回收了数据后就必须重新发PORT。
具体为什么不是很清楚。
linyu1247 2009-06-11
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 lovejklife 的回复:]
主动模式没用过

我的理解
每个数据连接都需要ACCEPT的,不可以在同一端口上建立多个数据连接,必须close再accept,要同时建立多个数据连接要Create多个Socket
              Send Port command->Send "List" command

Create Listen Socket->bind port->Listen->Accept->Receive->close->
                                            |                    |
                                            --------- <---…
[/Quote]
port模式的话 ftp服务器端不多是用20端口来进行数据连接吗?那不就是一个端口建立了多个数据连接,我查看服务器端口看到很多的20端口处于wait状态,过一段时间就被回收了。建议您多了解一下ftp的pasv和port模式的工作原理。
lovejklife 2009-05-09
  • 打赏
  • 举报
回复
主动模式没用过

我的理解
每个数据连接都需要ACCEPT的,不可以在同一端口上建立多个数据连接,必须close再accept,要同时建立多个数据连接要Create多个Socket
Send Port command->Send "List" command

Create Listen Socket->bind port->Listen->Accept->Receive->close->
| |
---------<----------
chzhk007 2009-04-29
  • 打赏
  • 举报
回复
我有个实际的应用项目,就是先拿FTP server的文件/目录列表。
然后针对每个子目录,拿它的文件列表。
所以数据连接肯定不是只用一次。

第一次是这么用的:
Create Listen Socket->Listen->Send Port command->Send "List" command->Accept->Receive

数据接收完毕后,我想继续发送"List 目录"命令去拿子目录下的文件列表,重用已经建立好的socket 和port,接收数据。可是接收的都是0字节的。

另外, 如果每次都是重新建立socket,象下面的那样,到是没问题,
Create Listen Socket->Listen->Send Port command->Send "List" command->Accept->Receive
但这样做并不是一个很好的解决方案。
因为如果子目录有上万个,那得重新建立上万个的新的socket和port,这种做法肯定是比较愚蠢的。
yearn520 2009-04-29
  • 打赏
  • 举报
回复
你所说的一次是什么意思?代码
biweilun 2009-04-29
  • 打赏
  • 举报
回复
我这边有个源代码给你参考下看看:http://www.brsbox.com/filebox/down/fc/3b9ac7f3f3fc71c6282e376864d46ae7
wutaihua 2009-04-29
  • 打赏
  • 举报
回复
这个问题可能比较复杂,我当时为了写一个服务器,用了我2个星期还多。后面就是调试。我的经验就是你竟然是写的客户端,可以找个开源的服务器端来比较,调试。这样,比你这样整要好一些。对照着来。我当时也是这么搞的。
wutaihua 2009-04-29
  • 打赏
  • 举报
回复
连接是重新建立和收回的,你可以做一个socket的管理机制,不用了,就收回port啊。而且你看看客户端和服务器端的连接,并不是有一万个目录,就直接传10000个吧。而是分开发送的。
内容概要:本文介绍了一种基于多目标粒子群算法(MOPSO)的微电网优化调度模型,综合考虑风能、光伏、储能系统、柴油发电机、燃气轮机以及与主电网之间的能量交互等多种分布式能源的协同运行。通过构建以运行成本最小化、碳排放最低化和系统可靠性最优化为目标的多目标优化模型,利用Matlab平台实现MOPSO算法求解,完成对微电网在不同运行场景下的能量管理与调度方案优化。该模型能够有效平衡经济性与环保性之间的关系,适用于含多类型分布式电源的复杂微电网系统,具有较强的工程应用价值和科研参考意义; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及工程技术人员,尤其适合从事微电网、智能电网、综合能源系统、可再生能源集成与优化调度等领域研究的专业人士; 使用场景及目标:①用于多能源耦合微电网系统的协同优化调度研究;②支持多目标智能优化算法在能源系统中的建模与求解实践,帮助用户掌握MOPSO在实际工程问题中的应用方法;③为学术论文复现、毕业设计、科研项目开发提供完整的代码实例与技术支撑; 阅读建议:建议读者结合Matlab代码与理论文档,深入理解目标函数构建、约束条件处理及Pareto最优解集生成机制,重点关注算法参数设置、多目标权衡分析与结果可视化,并可通过调整能源配置或引入新约束进行二次开发与创新研究。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧