pyftpdlib每个套接字地址只有一个用法

时间:2014-02-20 08:30:49

标签: python sockets ftp-server

我在Windows 7机器上使用python 2.7.2。

我的代码:

from multiprocessing import Process

def dummy_ftp_server(local_interface, username, password, homedir, perms): 
    from pyftpdlib.authorizers import DummyAuthorizer
    from pyftpdlib.handlers import FTPHandler
    from pyftpdlib.servers import FTPServer

    authorizer = DummyAuthorizer()
    authorizer.add_user(username, password, homedir, perm=perms)

    handler = FTPHandler
    handler.authorizer = authorizer

    server = FTPServer((local_interface, 21), handler)
    server.serve_forever()      

process = Process(target=dummy_ftp_server, args=('127.0.0.1', 'user', 'pass', "C:/path/test", 'elradfmw'))
process.start()

尝试使用multiprocessing.process运行ftp服务器时出现此错误

  

追踪(最近一次通话):     文件“C:\ path \ test_ftp.py”,第18行,在dummy_ftp_server中       server = FTPServer((local_interface,21),handler)
    文件“C:\ Python27 \ lib \ site-packages \ pyftpdlib \ servers.py”,第145行,在 init 中       self._af = self.bind_af_unspecified(address_or_socket)
    在bind_af_unspecified中的文件“C:\ Python27 \ lib \ site-packages \ pyftpdlib \ ioloop.py”,第733行       提出socket.error(错误)
  错误:[Errno 10048]通常只允许使用每个套接字地址(协议/网络地址/端口)

如果我在不使用multiprocessing.process的情况下使用

运行它
dummy_ftp_server('127.0.0.1', 'user', 'pass', "C:/path/test", 'elradfmw')

它工作正常。

在Linux机器上我没有这个问题。

1 个答案:

答案 0 :(得分:0)

您正尝试使用相同的端口在同一个IP地址上运行多个ftp服务器。 这就是错误告诉你的。

你可能已经在127.0.0.1:21

上运行了一些东西

使用netstat -an

检查控制台