Не удается подключиться к локальному FTP-серверу pyftpdlib: [WinError 10061] Не удалось установить соединение - PullRequest
1 голос
/ 05 мая 2020

Я пытаюсь загрузить / скачать файл на локальный FTP-сервер, но возникает ошибка, указанная в заголовке. Для сервера я использую pyftpdlib:

import os

from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer

# instantiate a dummy authorizer 
authorizer = DummyAuthorizer()

# instantiate anonymous user to current directory
authorizer.add_anonymous(os.getcwd())

# FTP handler class
handler = FTPHandler
handler.authorizer = authorizer

# setup server on localhost, port = 21
address = ('', 21)
server = FTPServer(address, handler)

# set a limit for connections
server.max_cons = 10
server.max_cons_per_ip = 3

# start ftp server
server.serve_forever()

Вот код клиента:

from ftplib import FTP

# connect to FTP server
client = FTP(host="127.0.0.1")
client.login()

# list the contents of directory
client.retrlines('LIST')

Но конструктор FTP выдает:

ConnectionRefusedError : [WinError 10061] Невозможно установить соединение, потому что целевая машина активно отказалась от него.

Сначала я думал, что это проблема с портом (я не указывал порт от клиента при подключении), поэтому изменил порт сервера на 21, который я считаю портом по умолчанию.

При запуске кода сервера я получаю предупреждение брандмауэра, но когда я даю ему разрешение, он работает нормально. Как подключиться к серверу со стороны клиента?

1 Ответ

1 голос
/ 05 мая 2020

Я не уверен, что '' в качестве адреса будет делать на стороне сервера. Либо это изначально неверное значение. Или он может разрешить IP-адрес, отличный от 127.0.0.1. Вы должны использовать одно и то же значение как на стороне сервера, так и на стороне клиента.

Я бы начал с 127.0.0.1 на стороне сервера.

address = ('127.0.0.1', 21)
...