我想寫一個服務器,可以接受多個客戶端在Python(扭曲)。我已經非常熟悉使用標準python套接字模塊的套接字編程,但是這裏出現了問題.. 我認爲twisted很難進入,我已經閱讀了一些關於它的教程。 但我真的找不到一個簡單的套接字服務器接受多個連接..任何人都可以幫忙嗎?如果我在網上錯過了一些有價值的信息,請讓我知道,因爲我拉我的頭髮..多個客戶端的扭曲服務器
任何幫助是非常讚賞,
Andesay
我想寫一個服務器,可以接受多個客戶端在Python(扭曲)。我已經非常熟悉使用標準python套接字模塊的套接字編程,但是這裏出現了問題.. 我認爲twisted很難進入,我已經閱讀了一些關於它的教程。 但我真的找不到一個簡單的套接字服務器接受多個連接..任何人都可以幫忙嗎?如果我在網上錯過了一些有價值的信息,請讓我知道,因爲我拉我的頭髮..多個客戶端的扭曲服務器
任何幫助是非常讚賞,
Andesay
說,你要在服務器上運行的端口9000接受客戶端連接:
from twisted.internet import reactor, protocol
PORT = 9000
class MyServer(protocol.Protocol):
pass
class MyServerFactory(protocol.Factory):
protocol = MyServer
factory = MyServerFactory()
reactor.listenTCP(PORT, factory)
reactor.run()
如果你想測試連接到該服務器,下面是客戶端的代碼(在不同的終端推出):
from twisted.internet import reactor, protocol
HOST = 'localhost'
PORT = 9000
class MyClient(protocol.Protocol):
def connectionMade(self):
print "connected!"
class MyClientFactory(protocol.ClientFactory):
protocol = MyClient
factory = MyClientFactory()
reactor.connectTCP(HOST, PORT, factory)
reactor.run()
你會注意到代碼非常相似,只有我們使用Factory作爲服務器,ClientFactory使用客戶機,並且服務器需要偵聽(listenTCP),而客戶端需要連接(connectTCP)。祝你好運!
我想,你沒有得到的扭曲的本質。如果您創建了雙絞線套接字服務器,則默認情況下可通過多個客戶端進行連接我會按順序建議下列教程,然後閱讀扭曲的文檔。根據這些教程中的內容編寫小片段,以瞭解實際發生的情況。
Twisted是一個真棒框架,但這個(經常)意味着,對於一件容易的事情,可能是一個很困難......
這是事實。你需要寫一個類實現了一個Resource,如果你需要一個LineReceiver,然後將其與連接到反應器:
reactor.connectTCP(<HOST>, <PORT>, istance_of_your_class)
經過反思,這個答案根本沒有任何意義。您已將'resource'鏈接到'ClientFactory',並且我沒有看到'connectTCP'如何與* all *處的提問者問題相關聯。 「接受多個客戶端」聽起來像提問者正在編寫*服務器*而不是客戶端。資源只與HTTP有關,一個'LineReceiver'與什麼有關,你在說什麼類有一個實例? – Glyph 2011-01-05 15:28:42
本教程是一個偉大的(最好的)出發點來學習如何從頭開始編寫扭曲服務器: http://twistedmatrix.com/documents/current/core/howto/tutorial/index.html
你看http://stackoverflow.com/questions/1365737/managing-multiple-twisted客戶端連接 – 2011-01-05 13:41:36
安德魯,我認爲這個問題與Andesay提出的問題不同。我覺得Andesay的問題在很基礎的層面上。如果我錯了,請糾正我。 – 2011-01-05 13:44:21