国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python 編程之twisted詳解及簡單實例

2019-11-25 16:22:51
字體:
供稿:網(wǎng)友

python 編程之twisted詳解

前言:

 我不擅長寫socket代碼。一是用c寫起來比較麻煩,二是自己平時也沒有這方面的需求。等到自己真正想了解的時候,才發(fā)現(xiàn)自己在這方面確實有需要改進的地方。最近由于項目的原因需要寫一些Python代碼,才發(fā)現(xiàn)在python下面開發(fā)socket是一件多么爽的事情。

    對于大多數(shù)socket來說,用戶其實只要關(guān)注三個事件就可以了。這分別是創(chuàng)建、刪除、和收發(fā)數(shù)據(jù)。python中的twisted庫正好可以幫助我們完成這么一個目標(biāo),實用起來也不麻煩。下面的代碼來自twistedmatrix網(wǎng)站,我覺得挺不錯的,貼在這里和大家分享一下。如果需要測試的話,直接telnet localhost 8123就可以了。如果需要在twisted中處理信號,可以先注冊signal函數(shù),在signal函數(shù)中調(diào)用reactor.stop(),后面twisted繼續(xù)call stop_factory,這樣就可以繼續(xù)完成剩下的清理工作了。

from twisted.internet.protocol import Factory from twisted.protocols.basic import LineReceiver from twisted.internet import reactor  class Chat(LineReceiver):    def __init__(self, users):     self.users = users     self.name = None     self.state = "GETNAME"    def connectionMade(self):     self.sendLine("What's your name?")    def connectionLost(self, reason):     if self.name in self.users:       del self.users[self.name]    def lineReceived(self, line):     if self.state == "GETNAME":       self.handle_GETNAME(line)     else:       self.handle_CHAT(line)    def handle_GETNAME(self, name):     if name in self.users:       self.sendLine("Name taken, please choose another.")       return     self.sendLine("Welcome, %s!" % (name,))     self.name = name     self.users[name] = self     self.state = "CHAT"    def handle_CHAT(self, message):     message = "<%s> %s" % (self.name, message)     for name, protocol in self.users.iteritems():       if protocol != self:         protocol.sendLine(message)   class ChatFactory(Factory):    def __init__(self):     self.users = {} # maps user names to Chat instances    def buildProtocol(self, addr):     return Chat(self.users)    def startFactory(self):     print 'start'    def stopFactory(self):     print 'stop'  reactor.listenTCP(8123, ChatFactory()) reactor.run() 

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 钟山县| 井研县| 田东县| 来凤县| 信阳市| 连城县| 贵港市| 延庆县| 诸暨市| 平泉县| 临泽县| 梁山县| 桓仁| 金寨县| 彰武县| 仁化县| 仙游县| 德庆县| 延长县| 庆元县| 东方市| 海安县| 法库县| 沅江市| 万州区| 静安区| 鄄城县| 商河县| 宜州市| 通山县| 湟源县| 德州市| 天长市| 通化县| 苏尼特右旗| 洛浦县| 合作市| 皮山县| 彰化县| 汤阴县| 孝义市|