欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2017年01月28日 09:20:47   投稿:lqh  
這篇文章主要介紹了python 編程之twisted詳解及簡單實例的相關資料,需要的朋友可以參考下

python 編程之twisted詳解

前言:

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

    對于大多數socket來說,用戶其實只要關注三個事件就可以了。這分別是創(chuàng)建、刪除、和收發(fā)數據。python中的twisted庫正好可以幫助我們完成這么一個目標,實用起來也不麻煩。下面的代碼來自twistedmatrix網站,我覺得挺不錯的,貼在這里和大家分享一下。如果需要測試的話,直接telnet localhost 8123就可以了。如果需要在twisted中處理信號,可以先注冊signal函數,在signal函數中調用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() 

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

相關文章

  • Python機器學習性能度量利用鳶尾花數據繪制P-R曲線

    Python機器學習性能度量利用鳶尾花數據繪制P-R曲線

    這篇文章主要為大家介紹了Python機器學習性能度量利用鳶尾花數據繪制P-R曲線示例學習,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • python k-近鄰算法實例分享

    python k-近鄰算法實例分享

    這個算法主要工作是測量不同特征值之間的距離,有個這個距離,就可以進行分類了。簡稱kNN。
    2014-06-06
  • Flask框架運用Ajax實現(xiàn)數據交互的示例代碼

    Flask框架運用Ajax實現(xiàn)數據交互的示例代碼

    使用Ajax技術網頁應用能夠快速地將增量更新呈現(xiàn)在用戶界面上,而不需要重載刷新整個頁面,這使得程序能夠更快地回應用戶的操作,本文將簡單介紹使用AJAX如何實現(xiàn)前后端數據通信
    2022-11-11
  • 跟老齊學Python之for循環(huán)語句

    跟老齊學Python之for循環(huán)語句

    看這個標題,有點匪夷所思嗎?為什么for是難以想象的呢?因為在python中,它的確是很常用而且很強悍,強悍到以至于另外一個被稱之為迭代的東西,在python中就有點相形見絀了。在別的語言中,for的地位從來沒有如同python中這么高的。
    2014-10-10
  • Python OpenCV處理圖像之濾鏡和圖像運算

    Python OpenCV處理圖像之濾鏡和圖像運算

    這篇文章主要為大家詳細介紹了Python OpenCV處理圖像之濾鏡和圖像運算,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • django 實現(xiàn)手動存儲文件到model的FileField

    django 實現(xiàn)手動存儲文件到model的FileField

    這篇文章主要介紹了django 實現(xiàn)手動存儲文件到model的FileField,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Linux下python3.7.0安裝教程

    Linux下python3.7.0安裝教程

    這篇文章主要為大家詳細介紹了Linux下python3.7.0安裝教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • python matlibplot繪制多條曲線圖

    python matlibplot繪制多條曲線圖

    這篇文章主要為大家詳細介紹了python matlibplot繪制多條曲線圖,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • python3多線程知識點總結

    python3多線程知識點總結

    在本篇文章里小編給各位分享的是關于python3多線程的相關知識點內容,以后需要的朋友們可以參考下。
    2019-09-09
  • Python實現(xiàn)Kmeans聚類算法

    Python實現(xiàn)Kmeans聚類算法

    這篇文章主要為大家詳細介紹了Python實現(xiàn)Kmeans聚類算法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02

最新評論