社区
C语言
帖子详情
用socket编写ftp客户端的主要思路是什么?
adeadsea
2013-02-19 05:39:06
又:有什么要注意的地方?
...全文
448
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协议的描述。
socket
事项
ftp
客户
端
C语言
socket
实现的
ftp
客户
端
,纯C语言
编写
,
FTP
_
socket
.rar_C
Socket
FTP
_
ftp
socket
_
ftp
客户
端
_
socket
ftp
FTP
的服务器
端
与
客户
端
,使用
Socket
编写
,压缩包里面有详细的说明。
JAVA
编写
的
FTP
客户
端
和服务器
用java
编写
的
FTP
服务器、
客户
端
。服务器底层采用apache
FTP
server的JAR包。
客户
端
底层采用sun.net包。两者都可以独立使用。在myeclipse10.6里面
编写
,java版本是1.6。
基于MFC
编写
的
FTP
客户
端
(使用VS)
华中科技大学计算机网络实验——
socket
编程实现
FTP
计算机网络课程设计(农大)
socket
实现
FTP
客户
端
C++实现
自己
编写
的
FTP
程序,能够列表,上传,下载文本文件,下载二进制文件会有问题。 具体可看内部文档,也是我的实验报告 注释很多,只要了解
FTP
工作原理很容易就能看懂 操作环境VS2005,经验证2008也可以正常工作,但不保证低版本可行 使用
SOCKET
实现,文档中也有详细的说明,关于更多的细节网上可以找到
C语言
69,380
社区成员
243,074
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章