【发布时间】:2012-06-28 11:41:16
【问题描述】:
我必须用 C 语言开发 1 个 FTP(简单)服务器。
简单是什么意思??
我的意思是 FTP 服务器必须支持:
- 身份验证(USER、PASS、PORT)
- 更改目录 (CD)
- 文件列表 (LIST)
- 文件检索 (RETR)
我刚刚将数字 1-2-3-4 开发为“拆分部分”,我必须将它们合并到 main.c 中。所以他们没问题。
我不明白的是如何“接收”来自客户的通信。
我的意思是如何实现客户想要的(USER、PASS、CD、LIST、RETR)?
我已经阅读了 rfc959,但我还没有完全理解客户端和服务器之间的通信。
总结:
- 客户端连接到服务器(所以进入服务器这部分是套接字“accept(..)”),对吗? 1a 服务器向客户端发送“您已连接”对吗?
- 客户端向服务器发送用户、密码(文件 1,auth.c,但客户端向服务器发送用户和密码请求时我不知道如何读取)
- 成功登录后服务器发送文件列表(第3部分,list.c,没问题)
- 客户端向服务器发送它要下载的文件或 changedir 命令(同样,如何从客户端的请求中读取此信息?)
希望你明白:)
编辑:我在 GNU/Linux 上
【问题讨论】:
-
我建议你从更简单的开始,通过阅读网络教程,直到你知道什么是套接字以及它们是如何工作的,你如何创建简单的客户端,简单的服务器,阻塞和非阻塞套接字的区别,服务器可以处理多个连接(基本上按照那个顺序)。然后你就可以开始考虑制作一个 FTP 服务器了。
-
当然,除了以上网络相关的东西,你还需要对字符串和字符串解析、文件处理、列表等有一些基本的了解。
-
我开发了一个小型客户端和服务器(也带有 fork),但它们的工作方式与 ftp 客户端和服务器不同。实际上我的程序使用是:1)客户端连接到服务器2)客户端发送“文件列表”3)服务器发送结果4)客户端发送文件名5)服务器发送文件......所以不像ftp xD那样正确跨度>
-
在我看来,您的问题更多是关于如何解析客户端发送的命令,对吗?我认为您应该将这些过于笼统的问题拆分为更具体的问题,每个问题都描述您遇到的一个问题。
-
阅读史蒂文斯关于网络编程的书籍,看在上帝的份上,避开 Beej 的指南,就像它是放射性的一样。