社区
C语言
帖子详情
用socket编写ftp客户端的主要思路是什么?
adeadsea
2013-02-19 05:39:06
又:有什么要注意的地方?
...全文
516
11
打赏
收藏
用socket编写ftp客户端的主要思路是什么?
又:有什么要注意的地方?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ForestDB
2013-03-04
打赏
举报
回复
发送完下载文件的命令后难道不需要新建文件来保存下载的文件? 一次就能全部读完发的数据?难道不需要循环读发过来的数据?
adeadsea
2013-03-02
打赏
举报
回复
感谢楼上各位的回复,我看了一个例子,以下是发送完下载文件的命令后的代码,但我看不太懂,为什么要创建一个新文件,循环又有什么用? /* 客户端创建文件 */ file_handle = open(disk_name, CRFLAGS, RWXALL); for( ; ; ) { ... ... /* 客户端通过数据连接 从服务器接收文件内容 */ read(data_sock, read_buf, read_len); /* 客户端写文件 */ write(file_handle, read_buf, read_len); ... ... }
xunilcyl
2013-02-28
打赏
举报
回复
@Self_Chou 如果是用FTP协议来传输的话,用二进制方式传输。不管什么类型的文件,都是由二进制数据组成的,所以只要把文件中的每一位都传输完,这个文件就传输完成了。断点续传的话,就是client发送命令REST recvLength命令(recvLength是client已经接收的字节数)告诉server,让server传送recvLength之后的数据过来。
zhouxf_cn
2013-02-27
打赏
举报
回复
借贵宝地一用,Linux下怎么传输压缩文件,还有怎么实现断点续传
xunilcyl
2013-02-27
打赏
举报
回复
回复4楼, 如果你仅仅是编写一个FTP客户端,是没必要看vsftpd的源码的。看了对你编写ftp客户端其实也没那么大的用处,除非你想自己编写一个ftp服务器。其实只要你的客户端符合RFC959,就可以和包括vsftpd在内的所有符合标准的ftp服务器交互。 另外给个建议,进行开发的时候最好开着一个抓包软件,这样你可以检查你编写的客户端发出去的信息是不是和你预料中的一样,便于调试。以前我测试的时候就是和ftp://kernel.org(貌似也是vsftpd服务器)进行通信的,非常方便。
帅得不敢出门
2013-02-22
打赏
举报
回复
可以直接利用curl库编写ftp程序
七擒关羽
2013-02-22
打赏
举报
回复
补充下好了: 1、FTP包含2条socket连接,一条用于命令传输,一条用于数据传输 2、查看下 命令控制用法,个别服务端不是全部支持,比如断点续传命令 3、大部分系统都自动裸FTP操作,可以自己敲命令实现一些基本功能,可以加深理解 4、对源码查看可以,但需要自己学会调式源码
adeadsea
2013-02-22
打赏
举报
回复
ls,感谢回复。 我说具体点,我要编的是与vsftpd通信的客户端,网上客户端编写例子基本看懂了,但vsftpd源码却太复杂了,有必要看吗?怎么看?
xunilcyl
2013-02-20
打赏
举报
回复
你不把自己的想法贴出来。也没办法针对性的给建议啊! 用winsock编写的话,首先肯定要学基本的winsock的几个基本函数WSAStartup(),sock(),connect(),send(),recv()这些的用法。然后就看RFC959。对FTP协议有个大概的概念。接下来就是编写一个简单的程序,比如向某个FTP服务器发送一个字符串,然后接收响应并打印出来。 FTP交互过程一般如下: 1. client调用connect(),与server三次握手建立TCP连接。 2. server给client发送欢迎信息。 3. client调用recv()获得欢迎信息,显示。 4. client调用send()发送命令,一般的格式给"COMMAND content\r\n"。其中COMMAND就是FTP命令了,如"USER user\r\n","PASS 123456\r\n"等。每条命令肯定是以\r\n结尾。 5. server调用recv()接收命令,解析命令,执行命令。然后调用send()发送执行的结果。执行的结果一般是应答码加上对应的描述。例如,如果登录成功的话可能发送“230 login\r\n”.详见RFC959。 6. client根据应答码执行对应的操作。若连接断开,可以跳到1;若发送下一条命令,跳到4。 单线程的client实现起来比较简单,在此基础上使用多线程进行改造,进而实现多线程下载,断点续传功能。 还有考虑一下各种异常情况的处理吧。 用MFC中的某个类(具体叫什么我也不记得,没用过)来编写的话就轻松多了。具体的细节到网上找一个源码看看就可以了。 最后要说的就是FTP控制端口是21,数据端口是20,。还有传输数据的时候两种模式要搞明白,主动模式 被动模式。
ShengFei01
2013-02-19
打赏
举报
回复
你找一下《WinSock网络编程经络》,有FTP的详细介绍和实现,这还有FTP的实现例子FtpClnt: http://download.csdn.net/detail/geoff08zhang/4571358
FingerStyle
2013-02-19
打赏
举报
回复
建立连接, 按照FTP协议发数据啊。 注意的地方 就是仔细看FTP协议的描述。
计网课设 C++实现
FTP
客户端
和 服务器端
本文详细介绍了一个基于Windows
Socket
s的
FTP
客户端
和服务端的编程实践,包括基础知识、实现流程、关键代码及运行截图,展示了如何通过
FTP
协议进行文件上传和下载。
socket
编程实现
ftp
服务器
本文介绍了如何通过
socket
编程实现一个简易的
FTP
服务器,包括用户注册、文件列表查看及文件下载功能。服务器采用多线程支持并发连接,复用
socket
进行多次数据交换,
客户端
与服务端通过特定命令进行交互。在简易版本中,存在
客户端
最后写出时异常阻塞的bug,而在完整版本中提供了修复后的代码示例。
C++ 简单
FTP
客户端
软件开发
这是一个C++实现的简单
FTP
客户端
和服务端程序,包括文件的上传、下载、目录操作等功能。服务端通过命令行接收
客户端
的指令,如get、put、pwd、ls、mkdir、del等,支持文件传输和目录管理。
客户端
具备命令输入、文件上传和下载能力,可以与服务端进行交互。程序使用了Windows
Socket
API(Winsock2)进行网络通信,并采用不同的端口处理指令交流和数据交换。
AS3
socket
连接
FTP
历程
这篇博客详细记录了使用AS3通过
Socket
连接
FTP
服务的步骤和注意事项,包括
FTP
命令交互、Flash安全沙箱、文件选择、端口授权、AS与JS交互,以及解决丢包问题的策略。虽然无法提供完整源码,但提供了关键实现
思路
。
[python]-
socket
之
ftp
实现
本文介绍了如何使用Python的
socket
和
socket
server模块实现
FTP
客户端
和服务器。
客户端
主要
涉及发送下载命令、接收文件大小并下载文件,服务器端则处理命令、发送文件大小及文件内容。同时,文章讨论了防止
socket
粘包的问题,并给出了多线程处理
客户端
请求的方法。目前功能包括用户登录验证和put文件,但存在一些bug,后续将继续完善。
C语言
70,039
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章