【发布时间】:2013-05-07 20:56:22
【问题描述】:
我已经使用 ftplib 创建了一个 FTP 客户端。我在我的一个 Ubuntu 虚拟机上运行服务器,在另一个上运行客户端。我想使用 ftplib 连接到服务器,我正在通过以下方式进行连接:
host = "IP address of the server"
port = "Port number of the server"
ftpc = FTP()
ftpc.connect(host, port)
我收到以下错误!
Traceback (most recent call last):
File "./client.py", line 54, in <module>
ftpc.connect(host, port)
File "/usr/lib/python2.7/ftplib.py", line 132, in connect
self.sock = socket.create_connection((self.host, self.port), self.timeout)
File "/usr/lib/python2.7/socket.py", line 571, in create_connection
raise err
socket.error: [Errno 111] Connection refused
当我浏览 python 的文档时,我可以看到 ftplib 仅与 FTP(“域名”)中的域名一起使用。我可以使用 IP 地址代替域名吗?就我而言,我无法理解错误。如果有人能帮助我,那就太好了。
另外,如果我在服务器上使用端口 21,我会收到套接字错误:连接被拒绝。如何为我的 FTP 服务器使用端口 21?
谢谢。
【问题讨论】:
-
连接被拒绝意味着你的代码实际上到达了远程地址,但那台机器要么没有运行 ftp 服务器,要么端口被防火墙挡住了。使用 dns 名称没有任何意义——它只是一个抽象层。无论如何,一切都在 IP 上运行。
-
感谢您的回复。如何检查端口是否有防火墙?
-
在托管 FTP 服务器的服务器上,以
root或sudo iptables --list运行iptables --list。 -
从输出中我可以看到它全部接受。这是否意味着它没有防火墙? Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
-
从客户端机器尝试使用ftp命令行客户端手动ftp,看看它说了什么。
标签: python ftp-client ftplib