twisted基礎(chǔ)知識記錄(一)

Transports

Transport代表著兩個通過網(wǎng)絡(luò)通信的端對端的連接陈惰,Transports負責(zé)描述連接的細節(jié)部分,如流或者數(shù)據(jù)包導(dǎo)向,流量控制和可靠性雏赦,TCP,UDP和Unix的套接字是Transpos的例子芙扎。他們被設(shè)計為'最大可重用的最小功能單元'并且其余協(xié)議實現(xiàn)分離星岗,允許許多協(xié)議使用相同類型的傳輸。

Transports實現(xiàn)了ITransport接口纵顾。具有以下幾種方法:

write --- 按照非阻塞的方式按順序?qū)⒁恍?shù)據(jù)寫入物理連接
writeSequence---將一個字符串列表寫入物理連接
loseConnection---寫入所有掛起的數(shù)據(jù)伍茄,然后關(guān)閉連接
getPeer---得到此連接的遠程地址
getHost---得到連接這一端的地址

Transports從protocols中解耦也使得測試這兩層更加容易

Protocols

Protocols描述了如何異步處理網(wǎng)絡(luò)事件。其中HTTP施逾,DNS和IMAP是應(yīng)用協(xié)議的示例敷矫。

Protocols實現(xiàn)了IProtocol接口,具體包括以下方法:

makeConnection---創(chuàng)建一個連接綁定一個transport和一個server
connectionMade---在連接創(chuàng)建時被調(diào)用
dataReceived---在接收到數(shù)據(jù)是被調(diào)用
connectionLost---在斷開連接時被調(diào)用

對于reactor汉额、transport和protocols之間的關(guān)系曹仗,最好的方法就是用一個例子來描繪,下面給出一個示例(Server+client)

首先是一個Server實現(xiàn):

from twisted.internet import protocol, reactor

class Echo(protocol.Protocol):
    def dataReceived(self, data):
    # 一旦有數(shù)據(jù)到來就返回一個回應(yīng)
    self.transport.write(data)

class EchoFactory(protocol.Factory):
    def buildProtocol(self, addr):
    return Echo()

reactor.listenTCP(8000, EchoFactory())
reactor.run()

然后是一個客戶端

from twisted.internet import reactor, protocol

class EchoClient(protocol.Protocol):
    def connectionMade(self):
        self.transport.write("hello, world!")

    def dataReceived(self, data):
        print "Server said:", data
        self.transport.loseConnection()

    def connectionLost(self, reason):
        print "connection lost"

class EchoFactory(protocol.ClientFactory):
    def buildProtocol(self, addr):
        return EchoClient()

    def clientConnectionFailed(self, connector, reason):
        print "Connection failed - goodbye!"
        reactor.stop()

    def clientConnectionLost(self, connector, reason):
        print "Connection lost - goodbye!"
        reactor.stop()

reactor.connectTCP("localhost", 8000, EchoFactory())
reactor.run()

上述代碼的描述:

運行服務(wù)器腳本啟動偵聽端口8000上的連接的TCP服務(wù)器蠕搜。服務(wù)器使用Echo協(xié)議(自定義)怎茫,并通過TCP傳輸寫出數(shù)據(jù)。

運行客戶端與服務(wù)端建立TCP連接,回應(yīng)服務(wù)器響應(yīng)轨蛤,然后終止連接并停止reactor蜜宪。

Factory主要用于生產(chǎn)連接兩端的協(xié)議實例

Transports是異步雙向的

connectTCP負責(zé)與reactor注冊回調(diào),以便在數(shù)據(jù)可以從socket上讀取時得到通知祥山。

by---http://www.aosabook.org/en/twisted.html
將Twisted的知識再系統(tǒng)深入學(xué)習(xí)一遍圃验。。缝呕。澳窑。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市供常,隨后出現(xiàn)的幾起案子摊聋,更是在濱河造成了極大的恐慌,老刑警劉巖栈暇,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件麻裁,死亡現(xiàn)場離奇詭異,居然都是意外死亡瞻鹏,警方通過查閱死者的電腦和手機悲立,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來新博,“玉大人薪夕,你說我怎么就攤上這事『涨模” “怎么了原献?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長埂淮。 經(jīng)常有香客問我姑隅,道長,這世上最難降的妖魔是什么倔撞? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任讲仰,我火速辦了婚禮,結(jié)果婚禮上痪蝇,老公的妹妹穿的比我還像新娘鄙陡。我一直安慰自己,他們只是感情好躏啰,可當(dāng)我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布趁矾。 她就那樣靜靜地躺著,像睡著了一般给僵。 火紅的嫁衣襯著肌膚如雪毫捣。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天,我揣著相機與錄音蔓同,去河邊找鬼饶辙。 笑死,一個胖子當(dāng)著我的面吹牛牌柄,可吹牛的內(nèi)容都是我干的畸悬。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼珊佣,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了披粟?” 一聲冷哼從身側(cè)響起咒锻,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎守屉,沒想到半個月后惑艇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡拇泛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年滨巴,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片俺叭。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡恭取,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出熄守,到底是詐尸還是另有隱情蜈垮,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布裕照,位于F島的核電站攒发,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏晋南。R本人自食惡果不足惜惠猿,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望负间。 院中可真熱鬧偶妖,春花似錦、人聲如沸唉擂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽玩祟。三九已至腹缩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背藏鹊。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工润讥, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人盘寡。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓楚殿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親竿痰。 傳聞我的和親對象是個殘疾皇子脆粥,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容