linereceiver類就是幫助封裝這些命令的.
考慮用linereceiver實現乙個機械人.
# -*- coding: utf-8 -*-
from twisted.protocols.basic import linereceiver
class answerprotocol(linereceiver):
answers =
def linereceived(self, line):
if self.answers.has_key(line):
self.sendline(self.answers[line])
else:
self.sendline(self.answers[none])
在我們啟動這個機械人之前, 我們需要談論一下狀態機.
很多twisted協議處理中都需要狀態機來記錄當前的狀態, 下面是一些建議:
1.不要編寫過大, 過複雜的. 狀態機應該一次只處理乙個層次的抽象.
2. 使用python語言的動態性建立open ended
狀態機,
比如smtp
客戶端.
3. 不要把協議處理**和應用相關**混合.
完整的**:
# -*- coding: utf-8 -*-
from twisted.protocols.basic import linereceiver
from twisted.internet.protocol import protocol, factory
from twisted.internet import reactor
class answerprotocol(linereceiver):
answers =
def linereceived(self, line):
if self.answers.has_key(line):
self.sendline(self.answers[line])
else:
self.sendline(self.answers[none])
class answe***ctory(factory):
protocol = answerprotocol
#開始啟動服務
factory = answe***ctory()
reactor.listentcp(8007, factory)
reactor.run()
客戶端連線:
funcat:~ daniel$ telnet 127.0.0.1 8007
trying 127.0.0.1...
connected to localhost.
escape character is '^]'.
how are you?
fine
what's your name?
i don』t know what you mean
connection closed by foreign host.
機械人走方格系列
m n的方格,乙個機械人從左上走到右下,只能向右或向下走。有多少種不同的走法?由於方法數量可能很大,只需要輸出mod 10 9 7的結果。input 第1行,2個數m,n,中間用空格隔開。2 m,n 1000 output 輸出走法的數量。input示例 2 3output示例 3 include ...
好色機械人的豔遇 機械人豔遇 《機械人的旅行》
講述機械人 路遇開房車的 剛剛開始的時候畫風很舒服,直到到了晚上上了她的床之後。畫風速變了!這個女主角聲音超好聽。整個情節實在太流氓了,太猥瑣了!連六六君這樣的老司機都看不下去了!正片在三分五十,不謝 很抱歉,此內容已經失效了!就連六六君也無法恢復了。請欣賞其他有效的內容 當您看到這條資訊的時候,很...
hdu 1876 機械人系列2
這題讓人很抓狂 交了不知道多少次才過 從前往後找,類似dp 的方法拓展出到達每個位置正好沒有能量到的最大補充能量次數和方法數,最後再統計 1 int 是顯然會超的 2 給的能量會為 0 如果能量在終點處為 0 那麼要特別討論一下 3 一定要判斷你找到的那個補充能量的最大次數的方法到底能不能抵達終點 ...