失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > FTP服务器和客户端源代码编写问题(ftp server client source)

FTP服务器和客户端源代码编写问题(ftp server client source)

时间:2019-10-05 04:00:12

相关推荐

FTP服务器和客户端源代码编写问题(ftp server client source)

最近关注FTP程序源代码的朋友非常多,这里简单说明一下。

其实FTP也就是普通的Socket程序,只是需要按照FTP协议(RFC959, 1635?可能我记错了)去做,也就是每个消息有固定的结构的,比如头3个字节必须是200,201,300,400之类的数字表示操作结果。

写FTP协议的程序主要要明白的一个关键问题是双socket,一个control socket,一个是data socket,当然,你读源代码还可能发现一个passive socket:

control socket是用来在Client和Server之间传递命令的(Client<->Server:21):比如Client向Server的21端口发一个USER命令,即发用户名和密码给Server,再比如Client发LIST命令给Server,都是要用control socket传递命令并接收命令操作结果的。

data socket是用来在Client和Server之间传递数据的(Client<->Server:20):比如Client发送一个LIST命令给Server之后,如果执行成功,这个成功消息的返回要由上面的control socket返回给Client,但LIST得到的那些数据就要由data socket来传递,也只有在收到这个成功的消息之后,Client才会连接Server的20端口去接收数据。

另外有passive socket,是一种data socket,是反向连接的,即Server发了LIST命令操作成功的消息给Client之后,Client会告诉Server一个端口(比如3000),Server才会连接Client的3000端口,把LIST得到的数据发送给Client。

我发现了一些FTP的源代码,给你一份C的吧:

FTP Server: http://www./darwinsource/Current/lukemftpd-17/

FTP Client: http://www./darwinsource/Current/lukemftp-5/

当然,你也可以去看看OpenBSD提供的FTP server源代码:

/cgi-bin/cvsweb/src/libexec/ftpd/

或者你去看看有名的Berkeley上面的各种各样 FTP server的源代码吧:

/u/berkeley?q=ftp+server&sitesearch=berkeley.edu&domains=berkeley.edu

还上提供的各种ftp源代码:

在/search/index.php面页上第一栏"with all of the words"里填入ftp搜索吧,各种源代码都有,各种出名的FTP也都在上面了。

具体的源代码分析暂时我就不做了。

如果觉得《FTP服务器和客户端源代码编写问题(ftp server client source)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。