2010-04-20 80 views
1

問候,論壇。多個,同時工廠和議定書的扭曲:同樣的服務,不同的端口

我工作的一個Python程序使用Twisted來管理網絡。該程序的基礎是一個TCP服務,用於監聽多個端口上的連接。但是,不是使用一個Twisted工廠來處理每個端口的協議對象,而是試圖爲每個端口使用單獨的工廠。其原因是強制連接到不同端口的客戶端組之間分離。

不幸的是,這種體系結構似乎並不工作:連接到一個端口的客戶似乎在所有工廠中都可用(例如,每個工廠使用的協議類包括一個'self.factory.clients。 append(self)'聲明...而不是將特定的客戶端添加到特定端口的工廠中,客戶端被添加到所有工廠中),並且每當我關閉一個端口上的服務時,所有端口上的偵聽器也會停止。

我一直在努力扭轉一小會兒的,怕我根本不完全瞭解它的工廠類的管理方式。

我的問題是:這是根本不可能有相同的工廠和相同協議的多個併發實例跨越不同的端口使用(沒有這些情況下踩着對方的腳趾)?

回答

6

你絕對可以做你想做的 - 這是很難說你做錯了,沒有看到你的代碼是什麼,但我敢打賭,你在你的工廠類中有clients = []而不是

self.clients = [] 

你的工廠類的__init__方法。

+0

哇 - 我不想對賭你,永遠! 如何完全荒謬的我不趕上。當我將'clients'列表的初始化移動到我的工廠的__init__方法中時,整個問題就消失了。 非常感謝您的快速回復! – RichardCroasher 2010-04-20 15:42:56

+1

更不用說'你可能需要在你的'__init__'中做這個''現在是班級 - 沒有雙關語意圖。 – 2010-04-20 17:09:54

相關問題