1

我必须在 C 中开发 1 个 FTP(简单)服务器。简单
什么意思?我的意思是 FTP 服务器必须支持:

  1. 身份验证(用户、通行证、端口)
  2. 更改目录 (CD)
  3. 文件列表 (LIST)
  4. 文件检索 (RETR)

我刚刚将数字 1-2-3-4 开发为“拆分部分”,我必须将它们合并到main.c中。所以他们没有问题。
我不明白的是如何“接收”来自客户的通信。
我的意思是如何实现客户想要的(USER、PASS、CD、LIST、RETR)?
我已经阅读了 rfc959,但我还没有完全理解客户端和服务器之间的通信。
概括:

  1. 客户端连接到服务器(所以进入服务器这部分是套接字“accept(..)”),对吗?1a 服务器向客户端发送“您已连接”对吗?
  2. 客户端发送给服务器用户,密码(文件 1,auth.c,但我不知道当客户端向服务器发送用户和密码请求时如何读取)
  3. 成功登录后服务器发送文件列表(第 3 部分,list.c,没问题)
  4. 客户端向服务器发送它想要下载的文件或 changedir 命令(同样,如何从客户端的请求中读取此信息?)

我希望你明白:)

编辑:我在 GNU/Linux

4

3 回答 3

2

尽管您的问题有点令人困惑,但我正在尝试回答。获取命令行参数,如“用户名密码”并将这些参数传递argv[]send服务器并在服务器端接收使用recv。为了更好地理解,请参阅链接Client.cpp

希望这能解决你的困惑。

于 2012-06-28T12:17:32.127 回答
0

如果您使用的是 Berkeley 套接字 API(您的提及accept()暗示您是),您通常使用recv()从套接字读取数据。您需要从客户端连接的套接字中读取,然后检查您所获得的内容以确定它是否是您可以处理的有效命令。

于 2012-06-28T11:45:42.263 回答
0

我正在寻找一个代码来学习带有套接字的 ftp 的工作原理,并在 google 代码上找到了文件工作,并且代码清晰简单。网址:http ://code.google.com/p/ifilework

于 2013-07-10T08:07:04.080 回答