Python 更改twisted代理的重定向端口

Python 更改twisted代理的重定向端口,python,proxy,twisted,Python,Proxy,Twisted,我用twisted制作了一个简单的代理服务器 destination = portforward.ProxyFactory(dest_host, dest_port) reactor.listenTCP(listen_port, destination) reactor.run() 我想在某些情况下更改dest_端口,而不必重新启动服务器 我试过: new_dest = portforward.ProxyFactory(dest_host, new_dest_port) reactor.lis

我用twisted制作了一个简单的代理服务器

destination = portforward.ProxyFactory(dest_host, dest_port)
reactor.listenTCP(listen_port, destination)
reactor.run()
我想在某些情况下更改dest_端口,而不必重新启动服务器

我试过:

new_dest = portforward.ProxyFactory(dest_host, new_dest_port)
reactor.listenTCP(listen_port, new_dest)
当然,这产生了一个地址已经在使用的异常

这是否可能在操作过程中更改代理目标?

返回一个对象,该对象提供了一个
stopListening
方法,该方法可在该端口上停止服务器(请注意,它返回一个,并且服务器在
延迟
触发之前不会实际停止)


在第二次调用
listenTCP
之前,您可以使用此
stopListening
方法释放服务器端口以供新的重新配置的服务器使用。

此解决方案基本有效,所有新连接现在都发送到新端口。但是,已建立的连接将继续向已停止的代理端口发送数据。知道为什么吗?我希望(并且希望)在端口更改时重定向现有连接。有什么想法吗?使用
停止监听
listenTCP
进行操作只会对监听端口产生影响。监听端口是一个独特的东西。当连接尝试到达侦听端口时,将创建一个新的服务器端连接对象来表示它(通常是传输和协议)。然后,传输和协议与侦听端口完全分离。端口上发生的任何事情都不会对这些连接产生影响。如果希望更改这些连接的行为,则必须更改处理它们的协议上的某些内容。