【问题标题】:C++ FTP PORT command implementation using sockets使用套接字的 C++ FTP PORT 命令实现
【发布时间】:2016-10-03 07:49:03
【问题描述】:

我正在尝试为我的 cpp ftp 客户端实现活动模式。

我试图实现简单的 LISTEN 服务器,netstat -ant 说它正在监听 0.0.0.0:port(例如 1025)。

在客户端,当我发送 PORT 0,0,0,0,4,1\r\n 服务器回复代码 500 - 非法端口命令。

我还需要做些什么才能让它发挥作用?谢谢

更多信息

我的服务器代码: ..sin_addr.s_addr = INADDR_ANY;我可以将 inaddr_any 更改为仅“运行”的 IP,例如filezilla 与 192.168.1.13 上的服务器连接 - 当我使用 192.168.1.13 作为 inet_addr("192.168.1.13") 它工作但如何设置新的 tcp 监听 ip?当我尝试例如 192.168.1.14

时,它会返回 BIND 问题

【问题讨论】:

    标签: sockets ftp port


    【解决方案1】:

    您在 0.0.0.0 收听,这只是意味着“任何”,但对等方需要一个实际的 IP 地址,而不是 0.0.0.0。您需要向它发送一个公共 IP 地址,该地址将到达您的侦听套接字。

    【讨论】:

    • 感谢您的回复。我的代码中有这个:is.sin_addr.s_addr = INADDR_ANY,当我看到 filezilla 如何进入活动模式时,总是有“192.168.x.x”。那么如何设置监听公共 ip 的服务器呢?谢谢
    • 您无需对服务器设置进行任何更改。 INADDR_ANY 非常适合它的那一部分。您只需在 PORT 消息中告诉对等方它可以使用的内容。您无法连接到 0.0.0.0,因此它没有用处或不正确。
    • 好的,那么我怎么知道将什么 IP 放入 PORT 命令?在我的 ubuntu 上工作例如 192.168.1.13,但它不会在我认为的每个系统上工作。谢谢
    • 这取决于系统的公共 IP 地址是什么。您可以枚举其自己的 IP 地址,但如果您位于具有自己 IP 地址的任何描述的防火墙或端口转发器后面,则必须通过配置提供它。
    • 好的。还有一个关于主动上传的问题。我唯一要做的就是将数据发送到我的服务器的套接字? (看起来我会向我发送数据) - ftp 会从该套接字读取数据并自动上传吗?谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-05
    • 1970-01-01
    • 2020-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多